java基础ArrayList与LinkedList的区别以及使用场景

位置:首页>文章>详情   分类: 教程分享 > Java教程   阅读(1330)   2024-04-17 12:33:22

一.ArrayList与LinkedList的区别

 说法一:
  1. 因为Array是基于索引(index)的数据结构,它使用索引在数组中搜索和读取数据是很快的。Array获取数据的时间复杂度是O(1),但是要新增或者删除数据却是开销很大的,因为这需要重排数组中的所有数据。
  2. 相对于ArrayList,LinkedList插入是更快的。因为LinkedList不像ArrayList一样,不需要改变数组的大小,也不需要在数组装满的时候要将所有的数据重新装入一个新的数组,这是ArrayList最坏的一种情况,时间复杂度是O(n),而LinkedList中插入或删除的时间复杂度仅为O(1)。ArrayList在插入或sh数据删除需要更新索引(除了插入数组的尾部)。
  3. LinkedList需要更多的内存,因为ArrayList的每个索引的位置是实际的数据,而LinkedList中的每个节点中存储的是实际的数据和前后节点的位置
说法二:
  1. ArrayList是实现了基于动态数组的数据结构,LinkedList基于链表的数据结构。 
  2. 对于随机访问get和set,ArrayList觉得优于LinkedList,因为LinkedList要移动指针。 
  3. 对于新增和删除操作add和remove,LinedList比较占优势,因为ArrayList要移动数据。 
以上说法均为正确。

二.ArrayList与LinkedList的使用场景

LinkedList:
  •  你的应用不会随机访问数据。因为如果你需要LinkedList中的第n个元素的时候,你需要从第一个元素顺序数到第n个数据,然后读取数据。
  •  你的应用更多的插入和删除元素,更少的读取数据。因为插入和删除元素不涉及重排数据,所以它要比ArrayList要快。
ArrayList:
  • 你的应用需要随机访问数据,基本不会在list中插入或者删除元素
地址:https://www.leftso.com/article/292.html

相关阅读

本文组要摘录了网上各位大佬的总结。作为笔记搜录。尽量详细的讲解ArrayList与LinkedList的区别以及在何时选择那个用。
Java如何复制目录,Java基础教程系列,如果要将目录及其包含的所有子文件夹和文件从一个位置复制到另一个位置,请使用下面的代码,该代码使用递归遍历目录结构,然后使用Files.copy()函数...
Java基础多线程之主线程等待子线程结束,Java基础编程之多线程入门学习篇。主要讲解几种方法来实现Java多线程中主线程等待子线程结束的最快方式。
java常见面试题之冒泡排序
在这篇快速文章中,我们将介绍使用标准框架 - JSR 380(也称为Bean Validation 2.0)来验证Java bean的基础知识。当然,在大多数应用程序中验证用户输入是超常见的需求...
Java基础JVM中堆和栈理解,收集各大网站各大牛人的语录,在Java中,内存主要分为两种,一种是栈(stack)内存,另一种就是堆内存(heap)(某些情况下说的堆栈内存是指栈内存)。
Java Queue队列使用入门详解
java基础编程中float/double类型的正确比较方法
Java正则表达式基础使用packageorg.xqlee.utils.regular;importjava.util.regex.Matcher;importjava.util.regex.P...