Java #ArrayList#LinkedList

ArrayList介绍

      ArrayList解释为,数组(array)集合
     ArrayList 底层是基于数组实现的,ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素,
ArrayList 默认初始化大小DEFAULT_CAPACITY = 10,存在容器初始化大小

LinkedList介绍

     LinkedList解释为,链表(linked)集合

     LinkedList 底层是基于链表实现的,是一种线性表,但是并不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的地址。
正因为底层数据结构的不同,他们适用的场景不同,ArrayList 更适合随机查找,LinkedList 更适合删除和添加,查询、添加、删除的时间复杂度不同。


   ArrayList和LinkedList都实现了List接口,但是LinkedList还额外实现了Deque接口,所以可以用作队列来使用

ArrayList方法


add()    将元素插入到指定位置的 arraylist 中
addAll()    添加集合中的所有元素到 arraylist 中
clear()    删除 arraylist 中的所有元素
clone()    复制一份 arraylist
contains()    判断元素是否在 arraylist
get()    通过索引值获取 arraylist 中的元素
indexOf()    返回 arraylist 中元素的索引值
removeAll()    删除存在于指定集合中的 arraylist 里的所有元素
remove()    删除 arraylist 里的单个元素
size()    返回 arraylist 里元素数量
isEmpty()    判断 arraylist 是否为空
subList()    截取部分 arraylist 的元素
set()    替换 arraylist 中指定索引的元素
sort()    对 arraylist 元素进行排序
toArray()    将 arraylist 转换为数组
toString()    将 arraylist 转换为字符串
ensureCapacity()    设置指定容量大小的 arraylist
lastIndexOf()    返回指定元素在 arraylist 中最后一次出现的位置
retainAll()    保留 arraylist 中在指定集合中也存在的那些元素
containsAll()    查看 arraylist 是否包含指定集合中的所有元素
trimToSize()    将 arraylist 中的容量调整为数组中的元素个数
removeRange()    删除 arraylist 中指定索引之间存在的元素
replaceAll()    将给定的操作内容替换掉数组中每一个元素
removeIf()    删除所有满足特定条件的 arraylist 元素
forEach()    遍历 arraylist 中每一个元素并执行特定操作

LinkedListt方法


add(E e)    链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
add(int index, E element)    向指定位置插入元素。
addAll(Collection c)    将一个集合的所有元素添加到链表后面,返回是否成功,成功为 true,失败为 false。
addAll(int index, Collection c)    将一个集合的所有元素添加到链表的指定位置后面,返回是否成功,成功为 true,失败为 false。
addFirst(E e)    元素添加到头部。
addLast(E e)    元素添加到尾部。
offer(E e)    向链表末尾添加元素,返回是否成功,成功为 true,失败为 false。
offerFirst(E e)    头部插入元素,返回是否成功,成功为 true,失败为 false。
offerLast(E e)    尾部插入元素,返回是否成功,成功为 true,失败为 false。
clear()    清空链表。
removeFirst()    删除并返回第一个元素。
removeLast()    删除并返回最后一个元素。
remove(Object o)    删除某一元素,返回是否成功,成功为 true,失败为 false。
remove(int index)    删除指定位置的元素。
poll()    删除并返回第一个元素。
remove()    删除并返回第一个元素。
contains(Object o)    判断是否含有某一元素。
get(int index)    返回指定位置的元素。
getFirst()    返回第一个元素。
getLast()    返回最后一个元素。
indexOf(Object o)    查找指定元素从前往后第一次出现的索引。
lastIndexOf(Object o)    查找指定元素最后一次出现的索引。
peek()    返回第一个元素。
element()    返回第一个元素。
peekFirst()    返回头部元素。
peekLast()    返回尾部元素。
set(int index, E element)    设置指定位置的元素。
clone()    克隆该列表。
descendingIterator()    返回倒序迭代器。
size()    返回链表元素个数。
listIterator(int index)    返回从指定位置开始到末尾的迭代器。
toArray()    返回一个由链表元素组成的数组。
toArray(T[] a)    返回一个由链表元素转换类型而成的数组。


ArrayList查询

1 ArrayList 优于 LinkedList

 LinkedListt查询

 LinkedList 在获取第一个元素和最后一个元素时很快


ArrayList添加操作


1 ArrayList 的添加操作是存在扩容的情况,并且对于 ArrayList 的添加操作要分情况考虑。

2 在最后的位置添加元素
不需要移动,需要扩容。

3  在指定位置添加元素
指定位置的元素及后面的元素,均往后移动;效率相对较慢。(因为指定了位置,所以不用去遍历查找,但是需要移动元素)


LinkedList添加操作


1 LinkedList 的添加操作不涉及扩容

 2 在最后的位置添加元素

 3 在指定位置添加元素
  需要遍历找到下标,但是插入很快。


总结


ArrayList以下情况使用
频繁访问列表中的某一个元素。
只需要在列表末尾进行添加和删除元素操作。
LinkedList 以下情况使用 
你需要通过循环迭代来访问列表中的某些元素。
需要频繁的在列表开头、中间、末尾等位置进行添加和删除元素操作。
与 ArrayList 相比,LinkedList 的增加和删除的操作效率更高,而查找和修改的操作效率较低
 

你可能感兴趣的:(JAVA,java,算法,开发语言)