LinkedList的基本操作【集合容器知识回顾 ③】

LinkedList

LinkedList 是 Java 中的一个双向链表数据结构 。它由一系列节点组成,每个节点包含数据元素和指向前一个节点和后一个节点的引用。这种结构使 LinkedList 在插入和删除操作方面非常高效,因为它不需要像数组一样重新分配内存空间。

基础操作

初始化集合
java 复制代码
// 默认构造器初始化
LinkedList<String> linkedList = new LinkedList<>();
// 通过List初始化器进行LinkedList的初始化
LinkedList<String> linkedList2 = new LinkedList<>(List.of("a","b","c","d"));
添加元素
java 复制代码
linkedList.add("demo1");
linkedList.add(1,"demo2"); // 在指定索引位置进行插入元素
linkedList.add("demo3");
linkedList.add("demo4");
linkedList.addFirst("first"); // 在集合首部插入元素
linkedList.addLast("last"); // 在集合尾部插入元素
获取元素
java 复制代码
linkedList.get(0); // 获取指定索引的元素
linkedList.getLast(); // 获取集合的最后一个元素
linkedList.getFirst(); // 获取集合的第一个元素
删除元素
java 复制代码
linkedList.remove(); // 删除当前集合的最后一个的元素
linkedList.remove(1); // 删除集合中指定索引的元素
linkedList.remove("demo4"); // 删除集合中指定值的元素
替换元素
java 复制代码
linkedList.set(1,"替换"); // 替换集合中指定索引的元素
遍历元素
java 复制代码
// 传统for
for(int i=0;i<linkedList.size();i++){
    System.out.println(linkedList.get(i));
}

// for each
for(String item : linkedList){
    System.out.println(item);
}

// iterator 迭代器
Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()){
    System.out.println(iterator.next());
}

其余API就不一一列举了,和ArrayList基本差不多,不一样的查看API文档即可。

LinkedList 独有的操作

队列相关的API
方法名称 功能描述
public boolean offer(E e) 入队操作,在队列集合中添加一个元素
public boolean offerFirst(E e) 入队操作,在队列集合中添加一个元素到队首,底层还是addFirst(E e)
public boolean offerLast(E e) 入队操作,在队列集合中添加一个元素到队尾,底层还是addLast(E e)
public E poll() 出队操作,在队列集合中出队一个元素
public E pollLast() 出队操作,在队列集合中出队队尾的元素
public E pollFirst() 出队操作,在队列集合中出队队首的元素
java 复制代码
LinkedList<String> queue = new LinkedList<>();
// 入队
queue.offer("1");
queue.offer("2");
queue.offer("3");
// 出队
queue.poll();
System.out.println(queue);
栈相关API
方法名称 功能描述
public void push(E e) 入栈操作,给栈集合中添加一个元素,底层是 addFirst(e);
public E pop() 出栈操作,给栈集合中删除一个元素,底层是removeFirst()
java 复制代码
LinkedList<String> stack = new LinkedList<>();
// 入栈
stack.push("a");
stack.push("b");
stack.push("c");
// 出栈
stack.pop();
System.out.println(stack);
循环链表

小结

LinkedList 在插入和删除操作方面比ArrayList快,因为LinkedList是基于双向链表实现的,而ArrayList是动态数组,对于插入和删除操作,是移动大量的元素,比较慢。

LinkedList随机访问元素时,性能比较差,因为他需要从头开始逐个比较元素值来进行访问,而ArrayList随机访问元素非常快,直接通过索引下标去访问。

使用LinkedList时,应该考虑当前场景是否要进行多次的随机访问,如果有大量的随机访问,还是使用ArrayList较好。

相关推荐
huaweichenai几秒前
java的时间操作介绍
java·开发语言
A923A几秒前
【洛谷刷题 | 第五天】
算法·字符串·递归·洛谷
就不掉头发4 分钟前
C++右值与右值引用
开发语言·c++
IT猿手10 分钟前
基于 CBF 的多无人机编队动态避障路径规划研究,无人机及障碍物数量可以自定义修改,MATLAB代码
开发语言·matlab·无人机·动态路径规划
炸膛坦客12 分钟前
单片机/C/C++八股:(十六)C 中 malloc/free 和 C++ 中 new/delete 有什么区别?
c语言·开发语言·c++
@insist12312 分钟前
软件设计师-组网技术基础:网络设备、传输介质与局域网核心协议
开发语言·网络·软考·软件设计师·软件水平考试
毕设源码-朱学姐16 分钟前
【开题答辩全过程】以 基于SpringBoot+Vue的百货商品进出货平台为例,包含答辩的问题和答案
java·spring boot·后端
Navigator_Z21 分钟前
LeetCode //C - 990. Satisfiability of Equality Equations
c语言·算法·leetcode
bbbb36521 分钟前
图算法的最优路径搜索与边界约束建模的技术7
算法
東雪木25 分钟前
编程算法学习——栈与队列算法
学习·算法·排序算法