本文主要是介绍Java重修笔记 第四十二天 LinkedList 类、ArrayList 和 LinkedList 比较,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
-
LinkedList 类
1. LinkedList 类底层是一个双向链表
2. LinkedList 类中有两个属性 first 和 last ,他们分别指向首节点和尾节点
3. 每个结点(LinkedList 的内部类 Node 对象)中有三个属性,prev 指向前一个结点、next 指向后一个结点、item 存储元素的值,来实现双向链表
4. 双向链表只需要操作 prev 和 next 的指向就可以完成添加的删除操作,不存在数组扩容和数据前移的情况,所以 LinkedList 添加的删除的效率比较高
-
LinkedList 类常用方法
1. public boolean add(E e)
将指定元素插入到链表的末尾
2. public void add(int index, E element)
在指定位置插入
3. public E remove()
删除链表的第一个元素
4. public E remove(int index)
删除链表中指定位置的元素
5. public boolean remove(Object o)
删除链表中第一次出现的该元素
6. public E set(int index, E element)
替换指定位置的元素
7. public E get(int index)
返回指定元素
8. public int indexOf(Object o)
返回该元素的索引,找不到返回-1
9. public int size()
返回元素个数
-
ArrayList 和 LinkedList 比较
1. ArrayList 底层是可变数组
修改和查询的效率高,因为 ArrayList 可以通过索引直接定位
增加和删除的效率低,因为 ArrayList 要进行扩容
2. LinkedList 底层是双向链表
修改和查询的效率低,因为 LinkedList 要从头结点一个一个遍历才能找到
增加和删除的效率高,因为 LinkedList 只需要修改指针指向即可,不存在扩容
-
如何选择 ArrayList 和 LinkedList
1. 查询和修改的操作多就用 ArrayList , 修改和删除的操作多就用 LinkedList
2. 实际开发中,80%以上都用的是 ArrayList
3. ArrayList 和 LinkedList 都是线程不安全的
这篇关于Java重修笔记 第四十二天 LinkedList 类、ArrayList 和 LinkedList 比较的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!