底层结构 | 增删的效率 | 改查的效率 | |
ArrayList | 可变链表 | 数组扩容较低 | 较高 |
LinkedList | 双向链表 | 通过链表的追加有较高的效率 | 较低 |
对于平时的操作,我们应该如何选择ArrayList和LinkedList:
- 若我们的集合改查的操作相对比较多,则选择ArrayList
- 若我们的集合增删的操作相对比较多,则选择LinkedList
- 在程序中的操作80%-90%都是查询操作,因此我们大部分都会选择ArrayList
- 在一个项目中,根据业务的要求灵活选择也可能一个模块使用的是ArrayList,而另一个模块使用的是LinkedList
- 由于ArrayList和LinkedList都是线程不安全的,所以我们在确定没有线程并发的情况下再去选择使用哪种方式
对于java中LinkedList集合的CRUD
package Gather.CollectionArrayList.List.LinkedList;
import java.util.LinkedList;
/**
* @author 小王宝友
* @version 3.89
* 关于LinkedList的CRUD(C:创建 R:获取 U:增加 D:删除 增删改查)
* 由于LinkedList对应的是List的接口,所以,遍历方式和List一样
* 都可以使用增强for循环和迭代器iterator进行遍历
*
*
*
*/
public class LinkedListAnalysis {
public static void main(String[] args) {
LinkedList<Object> linkedList = new LinkedList<>();
//for循环linkedList添加元素
for (int i = 0; i < 2; i++) {
linkedList.add(i);
}
//单个添加
linkedList.add(100);
linkedList.add(100);
//增强for循环遍历linkedList
for (Object o : linkedList) {
System.out.println(o);
}
//删除
//linkedList.remove();
//修改第一个元素
linkedList.set(0,"乌拉!!");
System.out.println("==========");
for (Object o :linkedList) {
System.out.println(o);
}
//获取第一个元素
Object object = linkedList.get(0);
System.out.println("object="+object);
//获取第一个元素
System.out.println(linkedList.getFirst());
//获取最后一个元素
System.out.println(linkedList.getLast());
}
}