java中的栈与LinkedList

栈先进后出,常用方法是push/pop/peek。

初始化方法:

Deque<Integer> stack = new ArrayDeque<>();
Deque<Integer> stack = new LinkedList<>();

不用stack实现的原因是:

  1. stack是线程安全的,需要上锁,平时应用中并没有强烈的需求。
  2. JDK官方已建议优先使用Deque的实现类来代替Stack:Stack从Vector继承的一个副作用是,暴露了set/get方法,可以进行随机位置的访问,这与Stack只能从尾巴上进行增减的本意相悖。此外,Deque在转成ArrayList或者stream的时候保持了“后进先出”的语义,而Stack因为是从Vector继承,没有这个语义。
  3. ArrayDeque和LinkedList这两者底层,一个采用数组存储,一个采用链表存储;(这两者既可当成栈(仅支持在尾部加入或移除元素)使用;也可当成双端队列使用,即可以在队列的两端(头或尾)将元素加入或移除。)

LinkedList总结

linkedlist是一个双向链表,增删快,查询慢。

在这里插入图片描述

使用linkedlist可实现双向链表,队列,栈,双端队列,单向列表等。

用作双向链表

在这里插入图片描述

用作栈

在这里插入图片描述

参考原文链接:https://blog.csdn.net/linysuccess/article/details/109038453 https://blog.51cto.com/u_16213564/7174027

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值