LinkedList:
非同步集合
LinkedList 不是同步集合,如果需要在多线程环境下访问该集合,需要手动实现线程同步。
双向链表实现
LinkedList 内部使用双向链表来表示集合元素,每个节点都存储了元素、前驱节点和后继节点信息。
添加/删除元素的效率较高
由于是链表实现,LinkedList 的添加/删除元素的操作的时间复杂度是 O(1),因为只需要改变节点间的链接关系。
随机访问元素的效率较低
由于是链表实现,LinkedList 的随机访问元素的操作的时间复杂度是 O(N),因为需要从头或者从尾开始遍历链表,直到找到指定位置的元素。
实现了多种接口
LinkedList 实现了多种接口,包括 List、Deque、Queue、Cloneable 和 Serializable 接口。
不支持并发修改
在使用迭代器遍历 LinkedList 集合时,如果在遍历过程中对集合进行了修改操作,例如添加或删除元素,就会抛出 ConcurrentModificationException 异常。
他的数据结构是链表,双向链表结构,由于链表没有将元素存储在连续的空间中,元素存储在单独的节点中,然后通过引用将节点连接起来了,因此在在任意位置插入或者删除元素时,不需要搬移元素,效率比较高。查询效率较低,因为查询一个元素需要从头部或尾部开始查询,挨个遍历每一个元素直到找到所需元素
常见的方法
1.添加/删除元素
LinkedList<String> list = new LinkedList<>();
// 在链表头部添加元素
list.addFirst("A");
// 在链表尾部添加元素
list.addLast("C");
// 在指定位置添加元素
list.add(1, "B");
// 删除第一个和最后一个元素
list.removeFirst();
list.removeLast();
2.获取元素
LinkedList<String> list = new LinkedList<>();
// 获取链表头部元素
String first = list.getFirst();
// 获取链表尾部元素
String last = list.getLast();
// 获取指定位置的元素
String element = list.get(1);
// 获取元素个数
int size = list.size();
3.迭代器遍历
LinkedList<String> list = new LinkedList<>();
// 添加元素
// 使用迭代器遍历
Iterator<String> iterator = list.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
// 处理当前元素
}
4.for-each 循环遍历的三种方法
LinkedList<String> list = new LinkedList<>();
// 添加元素
// 使用 for-each 循环遍历
for (String element : list) {
// 处理当前元素
}
————————————————
版权声明:本文为CSDN博主「小池敲代码了吗」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/m0_73245042/article/details/134742749
博客来源:转载我自己
标签:遍历,LinkedList,框架,元素,list,链表,添加,集合 From: https://www.cnblogs.com/cq971/p/17870819.html