LinkedList集合是Java集合框架提供的一种基于链表实现的集合类。它实现了List接口和Deque接口,并且可以用作栈(先进后出)或队列(先进先出)。
一、LinkedList集合的特点包括以下几点:
- 基于链表:LinkedList内部使用链表来存储元素,每个元素(节点)都包含数据和指向下一个节点的引用。
- 动态性:与ArrayList不同,LinkedList的长度不固定,可以动态地添加或删除元素。
- 插入和删除高效:由于基于链表实现,插入和删除元素的操作在任意位置上都比较高效,时间复杂度为O(1)。
- 随机访问相对低效:由于LinkedList是基于链表的结构,访问元素时需要从头节点开始遍历,因此随机访问的效率相对较低,时间复杂度为O(n)。
- 支持双向遍历:LinkedList可以从头到尾或从尾到头双向遍历元素。
LinkedList集合适合于需要频繁的插入和删除操作的场景,并且不需要高效的随机访问。
二、LinkedList集合常用的方法
1.添加元素:
- add(E e): 在链表的末尾添加元素。
- addFirst(E e): 在链表的开头添加元素。
- addLast(E e): 在链表的末尾添加元素。
- add(int index, E element): 在指定位置插入元素。
2.访问元素:
- get(int index): 获取指定索引处的元素。
- getFirst(): 获取链表的第一个元素。
- getLast(): 获取链表的最后一个元素。
3.删除元素:
- remove(): 删除并返回链表的第一个元素。
- remove(int index): 删除指定索引处的元素。
- removeFirst(): 删除链表的第一个元素。
- removeLast(): 删除链表的最后一个元素。
4.判断元素是否存在:
- contains(Object o): 判断链表中是否包含指定的元素。
5.获取链表长度和清空链表:
- size(): 获取链表中元素的个数。
- clear(): 清空链表,删除所有元素。
6.遍历链表:
- 使用迭代器进行遍历,或者使用增强for循环遍历。
使用迭代器进行遍历:
import java.util.LinkedList;
import java.util.Iterator;
public class Main {
public static void main(String[] args) {
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("Apple");
linkedList.add("Orange");
linkedList.add("Banana");
// 使用迭代器遍历链表
Iterator<String> iterator = linkedList.iterator();
while (iterator.hasNext()) {
String element = iterator.next();
System.out.println(element);
}
}
}
使用增强for循环遍历:
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> linkedList = new LinkedList<>();
linkedList.add("Apple");
linkedList.add("Orange");
linkedList.add("Banana");
// 使用增强for循环遍历链表
for (String element : linkedList) {
System.out.println(element);
}
}
}
演示LinkedList集合的常用方法使用:
import java.util.LinkedList;
public class Main {
public static void main(String[] args) {
LinkedList<String> linkedList = new LinkedList<>();
// 添加元素
linkedList.add("Apple");
linkedList.addFirst("Orange");
linkedList.addLast("Banana");
System.out.println(linkedList); // 输出:[Orange, Apple, Banana]
// 获取元素
String first = linkedList.getFirst();
String last = linkedList.getLast();
System.out.println("First: " + first); // 输出:First: Orange
System.out.println("Last: " + last); // 输出:Last: Banana
// 删除元素
linkedList.remove("Apple");
linkedList.removeFirst();
System.out.println(linkedList); // 输出:[Banana]
// 判断元素是否存在
boolean contains = linkedList.contains("Banana");
System.out.println("Contains Banana: " + contains); // 输出:Contains Banana: true
// 获取链表长度和清空链表
int size = linkedList.size();
System.out.println("Size: " + size); // 输出:Size: 1
linkedList.clear();
System.out.println(linkedList); // 输出:[]
}
}