集合LinkedList的常见使用

本文介绍了Java中的LinkedList集合,一种双向链表数据结构,重点讲解了其创建、操作方法(如添加、删除、插入和遍历),以及在频繁插入/删除、队列/堆栈、循环链表等场景下的应用。同时提到了线程安全注意事项。
摘要由CSDN通过智能技术生成

目录

什么是LinkedList集合

LinkedList的方法

LinkedList集合的使用

1 创建 LinkedList 集合、添加元素、遍历元素

2 在指定位置插入元素

3 获取指定位置的元素

4 删除指定位置的元素

5 在开头或末尾插入元素

LinkedList集合的应用场景

如果你还不理解的话,那通俗易懂的讲就是:


什么是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<String> 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 的首尾节点相连,可以形成一个循环链表。这在某些场景下可能会有用,例如处理循环队列。

如果你还不理解的话,那通俗易懂的讲就是:
  • 需要频繁地进行插入和删除操作。
  • 需要高效地使用迭代器进行遍历操作。
  • 不需要随机访问元素,或者只需要在链表的头部和尾部进行访问。
  • 19
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值