今天看Java编程思想的时候自己心中生出了一个问题。请各位解惑,感谢
Java中的容器有很多种,我迷惑的是linkedList这个集合,我明白链表插入元素和删除元素的时候更方便,速度更快,时间复杂度更低。但是我回想了一下我写的代码中好像并没用用过这个集合。
我思考了一个问题,我们为什么要把一个对象存到集合中去?难道不是因为有用吗?存进去肯定要取出来的,那我果断选择ArrayList,那linkedList这个集合在我们编程中会帮我们解决什么问题呢?把它应用在什么场景比较好呢?
ArrayList在反复插入删除的时候效率比LinkedList低。
在以下情况下使用LinkedList比较合适:
1.在需要经常插入或删除元素的情况下,LinkedList比ArrayList更为高效。LinkedList提供了快速添加或删除首部和尾部元素以及在开头和末尾之外的任何位置添加或删除元素的支持。具体而言,添加或删除元素的时间复杂度是O(1),而在ArrayList中是O(n)。
2.在需要在容器中快速随机访问元素的情况下,ArrayList优于LinkedList。如果需要使用get(int index)方法访问容器中的元素,使用ArrayList要比LinkedList更加高效,因为ArrayList支持通过索引进行快速随机访问,而LinkedList需要按顺序访问来查找特定索引的节点。
3.当需要高效的实现双向队列或双向链表时,LinkedList是最佳选择,因为它直接实现了java.util.Deque。而且,它还提供了addFirst(), addLast(), getFirst(), getLast(), removeFirst(), removeLast()方法,这使得将LinkedList转换为双端队列的操作非常简单。
示例代码:
import java.util.LinkedList;
public class LinkedListExample {
public static void main(String[] args) {
LinkedList<String> linkedList = new LinkedList<>();
// 添加元素
linkedList.add("a");
linkedList.add("b");
linkedList.add("c");
// 第一个元素
System.out.println("First Element : " + linkedList.getFirst());
// 最后一个元素
System.out.println("Last Element : " + linkedList.getLast());
// 在第一个元素前面添加一个新元素
linkedList.addFirst("d");
// 在最后一个元素后面添加一个新元素
linkedList.addLast("e");
// 删除第一个元素
linkedList.removeFirst();
// 删除最后一个元素
linkedList.removeLast();
// 打印链表中的元素
System.out.println("LinkedList : " + linkedList);
}
}
输出结果:
First Element : a
Last Element : c
LinkedList : [d, a, b]