Java--LinkedList

LinkedList的特点

  • LinkedList是基于双向链表实现的有序集合;
  • LinkedList是非线程安全的;
  • LinkedList中的元素可重复,可为null值;
  • LinkedList可实现快速的插入和删除操作,与ArrayList相比,LinkedList的增删操作效率更高,而查改操作效率较低;
  • LinkedList实现了List接口,可进行列表操作;实现了Deque接口,可作为双端队列使用;实现了Cloneable接口,可克隆;实现了java.io.Serializable接口,可支持序列化,能通过序列化进行传输。

LinkedList的常用方法

  • 增加元素

方法方法描述
add(E e)将指定元素追加到列表末尾
offer(E e)将指定元素追加到列表末尾
add(int index,E e)将指定元素插入到列表指定位置
addAll(Collection<? extends E> c)将指定集合中所有元素追加到列表末尾
addAll(int index,Collection<? extends E> c)从列表指定位置插入指定集合中所有元素
addFirst(E e)在列表开头插入指定元素
offerFirst(E e)在列表开头插入指定元素
addLast(E e)在列表末尾追加指定元素
offerLast(E e)在列表末尾追加指定元素
  • 删除元素

方法方法描述
clear()删除列表所有元素
remove()删除列表头部(第一个元素)
remove(int index)删除列表指定位置的元素
removeFirst()删除并返回第一个元素
removeLast()删除并返回最后一个元素
poll()删除并返回第一个元素
  • 查找/获取元素

方法方法描述
contains(Object o)判断列表中是否存在指定元素
get(int index)获取列表指定位置的元素
getFirst()获取列表第一个元素
getLast()获取列表最后一个元素
indexOf(Object o)返回列表中指定元素第一次出现的索引
lastIndexOf(Object o)返回列表中指定元素最后一次出现的索引
peek()返回第一个元素(不删除)

LinkedList与Deque

如上图所示,实线表示继承,虚线表示实现。LinkedList实现了Deque接口,在构造方法中若参数类型是Deque,则只能访问Deque接口所定义的方法,而不能直接访问LinkedList中的非Deque方法。

Deque的具体使用

//创建双端队列
Deque<Integer> deque=new LinkedList<>();
//添加元素
deque.offer(1);
deque.offer(2);
deque.addFirst(0);
deque.addLast(3);
System.out.println("添加元素后的队列:"+deque);
//获取元素
System.out.println("获取第2个元素:"+((LinkedList<Integer>) deque).get(2));
System.out.println("获取第1个元素:"+deque.getFirst());
System.out.println("获取最后一个个元素:"+deque.getLast());
//删除元素
deque.removeFirst();
System.out.println("删除第一个元素后的队列:"+deque);
deque.removeLast();
System.out.println("删除最后一个元素后的队列:"+deque);

输出结果:

添加元素后的队列:[0, 1, 2, 3]
获取索引为2的元素:2
获取第1个元素:0
获取最后一个个元素:3
删除第一个元素后的队列:[1, 2, 3]
删除最后一个元素后的队列:[1, 2]

LinkedList与栈

由于LinkedList是一个双端队列,因此可以选择队列的任意一端作为栈来使用。

//创建队列
Deque<Integer> stack=new LinkedList<>();
//选择队列的头部作为栈,从头部添加元素(压栈)
stack.offerFirst(1);
stack.offerFirst(2);
stack.push(3);
stack.push(4);
System.out.println("初始时栈的元素:"+stack);
//出栈
System.out.println("出栈:"+stack.pollFirst());
//获取栈顶值但不出栈
System.out.println("获取栈顶值:"+stack.peekFirst());
System.out.println("栈的元素:"+stack);

输出结果:

初始时栈的元素:[4, 3, 2, 1]
出栈:4
获取栈顶值:3
栈的元素:[3, 2, 1]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值