Java集合之LinkedList

一、简介

LinkedList继承自AbstractSequentialList,是List和Deque接口的双向链表实现,其底层维护一个双向链表存储元素。它实现了所有可选的列表操作,并且只能存储同一种引用类型的数据,但是包括null。

LinkedList特点如下:

  • 动态扩容
  • 非线程安全
  • 允许插入的元素重复
  • 插入的元素是有序的(即按照添加的先后顺序排序)
  • 随机访问速度慢,可以使用下标访问(底层使用双向链表实现,访问元素需要遍历链表)
  • 插入和删除速度快(只需要改变相关节点引用的指向即可)

 二、构造函数

MethodDescription
LinkedList()构造一个空列表
LinkedList(Collection<? extends E> c)按照集合的迭代器返回的顺序构造包含指定集合的元素的列表

使用方式如下:

// 构造一个空列表
List<Integer> list = new LinkedList<>();

// 在构造列表时添加元素
List<Integer> list = new LinkedList<>(){{
	add(1);
	add(2);
	add(360);
}}; 

// 从已有的集合中构造新的列表, 该操作为浅拷贝
List<Integer> newList = new LinkedList<>(list);

三、常用方法

LinkedList类同时实现了List和Deque接口,其关于List接口的方法使用方式类似于ArrayList,这里只讲其关于Deque接口的一些常用方法。

TypeMethodDescription
void

addFirst(E e)

将元素e添加到列表头部
voidaddLast(E e)将元素e添加到列表尾部
Epeek()返回头部元素(不删除)
boolean

offer(E e)

将元素e添加到列表尾部
Epoll()删除并返回列表头部元素
void

push(E e)

将元素e添加到列表头部
Epop()删除并返回列表头部元素

使用LinkedList类实现队列功能:

// 定义一个空队列
Queue<Integer> queue = new LinkedList<>();
// 入队操作,在队尾添加元素(即尾部)
queue.offer(1);
// [1]
System.out.println(queue);
// 入队操作
queue.offer(2);
// [1, 2]
System.out.println(queue);
// 入队操作
queue.offer(3);
// [1, 2, 3]
System.out.println(queue);

// 查看队首元素但是不删除
// 1
System.out.println(queue.peek());
// [1, 2, 3]
System.out.println(queue);

// 出队操作,删除并返回队首元素
// 1
System.out.println(queue.poll());
// [2, 3]
System.out.println(queue);

使用LinkedList类实现栈功能:

// 定义一个空栈
LinkedList<Integer> stack = new LinkedList<>();
// 入栈操作,在栈顶添加元素(即头部)
stack.push(1);
// [1]
System.out.println(stack);
// 入栈操作
stack.push(2);
// [2, 1]
System.out.println(stack);
// 入栈操作
stack.push(3);
// [3, 2, 1]
System.out.println(stack);

// 查看栈顶元素但是不删除
// 3
System.out.println(stack.peek());
// [3, 2, 1]
System.out.println(stack);

// 出栈操作,删除并返回栈顶元素
// 3
System.out.println(stack.pop());
// [2, 1]
System.out.println(stack);

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值