Java集合框架之:LinkedList的常见方法使用
✨前言✨
本篇文章主要介绍Java LinkedList的使用方法教程及示例代码
🍒欢迎点赞 👍 收藏 ⭐留言评论 📝私信必回哟😁
🍒博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言
@
🍎一,简介概述
- LinkedList实现了List接口和Deque接口.
- 可以看作顺序容器,队列(Queue)和栈(Stack).
- 队列和栈首选ArrayDeque(当作栈,比Stack快;当作队列,比LinkedList快).
- 首尾添加或删除元素是常数时间(O(1)),和下标有关的操作为线性时间(O(n)).
- 为了提高效率,没有使用synchronized,非线程安全.
- 需要线程安全可以采用:Collections.synchronizedList(new LinkedList<>())对其进行包装.
Java的LinkedList是一种常用的数据容器,与ArrayList相比,LinkedList的增删操作效率更高,而查改操作效率较低。
特点:随机访问慢、插入删除速度快
实现
- 使用双向链表实现.
- 链表的每个节点使用内部类Node表示.
- 通过first和last分别指向链表的第一个和最后一个元素.
🍎二,常见方法以代码演示
1,创建方法表
返回值 | 方法名 | 描述 |
---|---|---|
boolean | add(E o) | 将指定元素追加到此列表的结尾。 |
void | add(int index, E element) | 在此列表中指定的位置插入指定的元素。 |
boolean | addAll(Collection<? extends E> c) | 追加指定 collection 中的所有元素到此列表的结尾,顺序是指定 collection 的迭代器返回这些元素的顺序。 |
void | addFirst(E o) | 将给定元素插入此列表的开头。 |
void | addLast(E o) | 将给定元素追加到此列表的结尾。 |
E | get(int index) | 返回此列表中指定位置处的元素。 |
E | getFirst() | 返回此列表的第一个元素。 |
E | getLast() | 返回此列表的最后一个元素。 |
E | set(int index, E element) | 将此列表中指定位置的元素替换为指定的元素。 |
E | remove() | 找到并移除此列表的头(第一个元素)。 |
E | remove(int index) | 移除此列表中指定位置处的元素。 |
E | removeFirst() | 移除并返回此列表的第一个元素。 |
E | removeLast() | 移除并返回此列表的最后一个元素。 |
int | size() | 返回此列表的元素数。 |
void | clear() | 从此列表中移除所有元素。 |
int | indexOf(Object o) | 返回此列表中首次出现的指定元素的索引,如果列表中不包含此元素,则返回 -1。 |
int | lastIndexOf(Object o) | 返回此列表中最后出现的指定元素的索引,如果列表中不包含此元素,则返回 -1。 |
Object[] | toArray() | 以正确顺序返回包含此列表中所有元素的数组。 |
... ... | ... ... | ... ... |
2,Java LinkedList
LinkedList类与ArrayList 几乎相同 ,也是集合List的实现类,相比ArrayList,其使用场景并不多,但有些时候也能用到。
例如:
创建一个名为lisk的LinkedList对象,该对象将存储字符串:
import java.util.LinkedList; // import the LinkedList class
LinkedList lists = new LinkedList();// 创建 LinkedList对象
泛型:
不指定泛型的容器可以放置任何类型的元素,但是指定泛型的容器只能放置指定类型的元素(以及其子类元素)
import java.util.LinkedList; // import the LinkedList class
LinkedList<String> lists = new LinkedList<String>();// 创建 LinkedList对象
3、ArrayList和LinkedList的区别
LinkedList类是一个集合,可以包含许多相同类型的对象,就像ArrayList一样。
LinkedList类具有与ArrayList类相同的所有方法,因为它们都实现了List接口。但是,虽然可以以相同的方式使用ArrayList类和LinkedList类,但是它们的构建方式却大不相同。
ArrayList和LinkedList的区别有以下几点:
- ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构;
- 对于随机访问get和set,ArrayList要优于LinkedList,因为LinkedList要移动指针;
- 对于添加和删除操作add和remove,一般情况下LinkedList要比ArrayList快,因为ArrayList要移动数据。一般首选用ArrayList,由于LinkedList可以实现栈、队列以及双端队列等数据结构,所以当特定需要时候,使用LinkedList。
4,向LinkedList添加元素
要将元素添加到LinkedList,需要使用 add()方法
LinkedList lists = new LinkedList();
//在末尾添加元素
lists.add("C");
lists.add("Python");
//将指定的值 添加到集合的指定 下标位置
lists.add(0,"Java");
lists.add(1,"Mysql");
5,访问LinkedList中元素
要访问LinkedList中的元素,请使用 get() 方法并引用索引号:
//获取第一个元素(最早添加的元素)
System.out.println(lists.getFirst());
//获取最后一个元素(最晚添加的元素)
System.out.println(lists.getLast());
//获取指定位置上的元素
System.out.println(lists.get(2));
//输出为
Java
Python
C
注意: 数组索引以0开头:[0]是第一个元素。 [1]是第二个元素,依此类推。
6,修改LinkedList中元素
要修改元素,需要使用 set() 方法并引用索引号:
lists.set(0,"C#");
System.out.println(lists.get(0));
//输出为
C#
7,删除LinkedList中元素
要删除元素,需要使用 remove() 方法并引用索引号:
//删除指定位置上的元素.
lists.remove(0);
//删除首次出现的指定元素.(从前向后查找)
lists.remove("Python");
//删除第一个元素.(非null)
lists.removeFirst();
//删除最后一个元素.(非null)
lists.removeLast();
8,LinkedList size
要找出LinkedList 有多少个元素,需要使用 size 方法:
lists.size()
🍎三,遍历
1,for循环遍历
//直接输出
for (int i = 0; i < lists.size(); i++) {
System.out.println(lists.get(i));
}
//输出为
Java
Mysql
C
Python
2,增强foreach循环遍历
//直接输出
for (Object values: lists) {
System.out.println(values);
}
//输出为
Java
Mysql
C
Python
3,迭代器遍历
//建立一个迭代器,并且将List中的元素放进迭代器中
Iterator it = lists.listIterator();
//迭代器的头指针是空的
while (it.hasNext()){
//每次next,指针都会指向下一个元素
Object values = it.next();
System.out.println(values);
}
//输出为
Java
Mysql
C
Python
✨最后✨
总结不易,希望uu们不要吝啬你们的👍哟(^U^)ノ~YO!!
如有问题,欢迎评论区批评指正😁
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本