「这是我参与2022首次更文挑战的第1天,活动详情查看:2022首次更文挑战」。
前言
大家好,我是程序猿小白 GW_gw,很高兴能和大家一起学习进步。
以下内容部分来自于网络,如有侵权,请联系我删除,本文仅用于学习交流,不用作任何商业用途。
摘要
本文主要介绍Java集合的LinkedList集合的特点和常用方法。
1. LinkedList集合
1.1 什么是LinkedList集合
LinkedList集合我们看名字就应该知道该集合是和链表相关的,它的底层使用双链表来实现。如果你想要频繁的插入或删除元素,那么相比于ArrayList集合,LinkedList集合绝对是更好的选择。同时LinkedList集合实现了List接口和Deque接口,因此不仅可以用作堆栈,还能用作队列和双端队列。
LinkedList类可以存放null元素,并且此类的实现不是同步的,并且对于遍历该集合,我们一般使用迭代器来获得更高的效率。
1.2 LinkedList集合的构造方法
LinkedList集合有两个构造方法,如下:
| LinkedList() 构造一个空列表。 |
|---|
| LinkedList(Collection c) 构造一个包含指定 collection 中的元素的链表,其中的元素按其 collection 的迭代器返回的顺序排列。 |
实例展示:
public class LinkedListTest {
public static void main(String[] args) {
LinkedList linkedList = new LinkedList();
ArrayList arrayList = new ArrayList<String>();
arrayList.add(1);
arrayList.add(2);
arrayList.add(3);
LinkedList linkedList1 = new LinkedList(arrayList);
Iterator iterator = linkedList1.iterator();
while(iterator.hasNext()){
Object next = iterator.next();
System.out.println(next);
}
}
}
可以看到,加入到LinkedList集合中的顺序是和初始化指定的集合的元素顺序是一致的。
1.3 LinkedList集合的常用方法
以下我们通过添加,删除,查找,修改集合元素中的顺序来学习各个方法,以便记忆。
- 添加元素:
| boolean add(E e) | 添加元素到末尾 |
|---|---|
| void add(int index, E element) | 在指定的下标位置添加元素,之后的元素位置依次向后挪。 |
| boolean addAll(Collection c) | 添加指定 collection 中的所有元素到此列表的结尾。 |
| boolean addAll(int index, Collection c) | 将指定 collection 中的所有元素从指定位置开始插入。 |
| void addFirst(E e) | 将指定元素插入到开头。 |
| void addLast(E e) | 将指定元素添加到末尾。 |
| void push(E e) | 添加元素到开头。 |
| boolean offer(E e) | 添加元素到末尾 。 |
| boolean offerFirst(E e) | 添加元素到开头 。 |
| boolean offerLast(E e) | 添加元素到末尾。 |
实例展示:
LinkedList linkedList = new LinkedList();
//将指定元素添加到此列表的结尾。
linkedList.add(1);
//在此列表中指定的位置插入指定的元素。
linkedList.add(1,2);
ArrayList arrayList = new ArrayList<String>();
arrayList.add(1);
//添加指定 collection 中的所有元素到此列表的结尾
linkedList.addAll(arrayList);
//将指定 collection 中的所有元素从指定位置开始插入此列表。
linkedList.addAll(0,arrayList);
//将指定元素插入此列表的开头。
linkedList.addFirst(5);
//将指定元素添加到此列表的结尾。
linkedList.addLast(6);
//将元素推入此列表所表示的堆栈,加入到列表的首位
linkedList.push(1);
//将指定元素添加到此列表的末尾(最后一个元素)。
linkedList.offer(6);
//在此列表的开头插入指定的元素。
linkedList.offerFirst(1);
//在此列表末尾插入指定的元素。
linkedList.offerLast(6);
小结: 添加元素的方法大多数没有返回值,或返回值为boolean类型。
- 删除元素:
| E poll() | 删除第一个元素并返回。 |
|---|---|
| E pollFirst() | 删除第一个元素并返回。如果为空,则返回 null。 |
| E pollLast() | 删除最后一个元素并返回。如果为空,则返回 null。 |
| E pop() | 删除第一个元素并返回。 |
| E remove() | 删除第一个元素并返回。 |
| E remove(int index) | 删除指定位置元素并返回。 |
| boolean remove(Object o) | 删除首次出现的指定元素(如果存在)。 |
| E removeFirst() | 删除第一个元素并返回。 |
| boolean removeFirstOccurrence(Object o) | 删除第一次出现的指定元素(从头部到尾部遍历列表时)。 |
| E removeLast() | 删除最后一个元素并返回。 |
| boolean removeLastOccurrence(Object o) | 删除最后一次出现的指定元素(从头部到尾部遍历列表时)。 |
| void clear() | 删除所有元素。 |
实例展示:
//获取并移除此列表的头(第一个元素)
linkedList.poll();
//获取并移除此列表的第一个元素
linkedList.pollFirst();
//获取并移除此列表的头(第一个元素)。
linkedList.remove();
//从此列表所表示的堆栈处弹出一个元素。
linkedList.pop();
//移除并返回此列表的第一个元素。
linkedList.removeFirst();
//获取并移除此列表的最后一个元素
linkedList.pollLast();
//移除并返回此列表的最后一个元素。
linkedList.removeLast();
//移除此列表中指定位置处的元素。
linkedList.remove(1);
//从此列表中移除首次出现的指定元素(如果存在)
linkedList.remove("1");
//从此列表中移除第一次出现的指定元素
linkedList.removeFirstOccurrence("1");
//从此列表中移除最后一次出现的指定元素
linkedList.removeLastOccurrence("1");
//从此列表中移除所有元素
linkedList.clear();
小结: 删除元素的方法大多数返回值是删除的元素。
- 查找元素:
| E element() | 返回第一个元素。 |
|---|---|
| E get(int index) | 返回指定位置的元素 |
| E getFirst() | 返回第一个元素。 |
| E getLast() | 返回最后一个元素。 |
| int indexOf(Object o) | 返回首次出现的指定元素的索引,如果不包含该元素,则返回 -1。 |
| int lastIndexOf(Object o) | 返回最后出现的指定元素的索引,如果不包含该元素,则返回 -1。 |
| E peek() | 返回第一个元素。 |
| E peekFirst() | 返回第一个元素。如果为空,则返回 null。 |
| E peekLast() | 返回最后一个元素;如果为空,则返回 null。 |
| boolean contains(Object o) | 如果包含指定元素,则返回 true。 |
实例展示:
//获取但不移除此列表的头(第一个元素)
linkedList.element();
//返回此列表的第一个元素。
linkedList.getFirst();
//获取但不移除此列表的头(第一个元素)
linkedList.peek();
//获取但不移除此列表的第一个元素;
linkedList.peekLast();
//获取但不删除最后一个元素
linkedList.getLast();
linkedList.peekLast();
//获取指定位置的元素
linkedList.get(1);
//返回此列表中首次出现的指定元素的索引,
linkedList.indexOf("1");
//返回此列表中最后出现的指定元素的索引
linkedList.lastIndexOf("1");
//判断元素是否存在与列表中
linkedList.contains("1");
- 修改元素:
| E set(int index, E element) | 将此列表中指定位置的元素替换为指定的元素。 |
|---|
实例展示:
linkedList.set(1,2);
- 获取元素个数:
| int size() | 返回此列表的元素数。 |
|---|
实例展示:
int size = linkedList.size();
小结
以上就是关于LinkedList集合的一些基本介绍和常用方法的使用场景及范例,希望对读者有所帮助,如有不正之处,欢迎掘友们指正。