集合LinkedList的常见使用

发布时间 2023-12-01 20:29:26作者: 伊利同学
什么是LinkedList集合 LinkedList 集合是Java编程语言中的一种双向链表数据结构,它实现了 List 接口和 Deque 接口。 与 ArrayList 类似,LinkedList 也是一种动态数组,可以根据需要动态地增加或减少元素的大小。 然而,LinkedList 与 ArrayList 在内部实现和性能方面有所不同 LinkedList 使用双向链表来存储元素,每个元素都包含一个指向前一个元素和后一个元素的引用,这种结构使得 LinkedList 在插入和删除元素时效率较高,因为它只需要调整节点的引用,而不需要移动其他元素 LinkedList的一些常见应用场景包括以下 5 类 1, 需要频繁插入和删除元素的场景,因为 LinkedList 在插入和删除操作上效率较高。 2. 实现队列和双向队列的场景,因为 LinkedList 实现了 Deque 接口。 3. 实现堆栈的场景,可以 LinkedList 的 addFirst() 和 removeFirst() 方法来模拟堆栈的入栈和 出栈操作。 4. 实现循环链表的场景,因为 LinkedList 的首尾节点相连,可以形成一个循环链表。 5. 需要进行大量顺序遍历操作的场景,因为 LinkedList 的顺序遍历效率较高。 需要注意的是,与 ArrayList 一样,LinkedList 也不是线程安全的。 如果在多个线程中同时访问和修改 LinkedList,可能会引发并发访问的问题, 在多线程环境中使用 LinkedList 时,应该采取相应的线程安全措施, 如使用同步机制或使用线程安全的替代方案。 LinkedList的方法 方法名 描述 add() 将指定元素追加到此列表的结尾 add(int ,E) 在此列表中指定的位置插入指定的元素 clear() 从此列表中移除所有元素 get() 返回此列表中指定位置处的元素 remove() 移除此列表中指定位置处的元素 size() 返回此列表的元素数 set() 将此列表中指定位置的元素替换为指定的元素 LinkedList集合的使用 以下是 LinkedList 集合的一些常见使用方式的示例代码: 1 创建 LinkedList 集合、添加元素、遍历元素 LinkedList linkedList = new LinkedList<>(); linkedList.add("aaaaa"); linkedList.add("bbbbb"); linkedList.add("ccccc"); for (String key : linkedList) { System.out.println(key); } 输出结果 aaaaa bbbbb ccccc 2 在指定位置插入元素 linkedList.add(1, "nnnnn"); System.out.println(linkedList); 输出结果 [aaaaa, nnnnn, bbbbb, ccccc] 3 获取指定位置的元素 String a = linkedList.get(1); System.out.println(a); 输出结果 bbbbb //下标从0开始 4 删除指定位置的元素 linkedList.remove(1); 根据下标删除 5 在开头或末尾插入元素 linkedList.addFirst("grape"); linkedList.addLast("watermelon"); System.out.println(linkedList); 输出结果 [grape, aaaaa, bbbbb, ccccc, watermelon] LinkedList集合的应用场景 1,需要频繁地进行元素插入和删除操作的场景:由于 LinkedList 采用双向链表的数据结构,插入和删除元素的效率较高,因为只需要调整节点的引用即可,而不需要像数组一样移动其他元素。 2,实现队列和双向队列的场景:LinkedList 实现了 Deque 接口,因此可以用来实现队列和双向队列。例如,可以使用 LinkedList 的 addFirst() 和 removeFirst() 方法来模拟队列的入队和出队操作。 3,实现堆栈的场景:LinkedList 也可以用来实现堆栈数据结构。通过使用 LinkedList 的 addFirst() 和 removeFirst() 方法来模拟堆栈的入栈和出栈操作。 4,需要进行大量顺序遍历操作的场景:LinkedList 的顺序遍历效率较高,因为它是一个链表数据结构,可以按顺序依次遍历元素。 5,实现循环链表的场景:由于 LinkedList 的首尾节点相连,可以形成一个循环链表。这在某些场景下可能会有用,例如处理循环队列。 如果你还不理解的话,那通俗易懂的讲就是: 需要频繁地进行插入和删除操作。 需要高效地使用迭代器进行遍历操作。 不需要随机访问元素,或者只需要在链表的头部和尾部进行访问。 ———————————————— 版权声明:本文为CSDN博主「天降伊利大王」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。 原文链接:https://blog.csdn.net/liyil66464/article/details/134742658