Java基本数据类型说明及方法介绍(持续更新中...)

Java基本数据类型说明及方法介绍(持续更新中...

前言

目前这个更新没什么特定的顺序,就是在力扣上刷题的用到哪个就先写哪个了,现在暂时都写在一起,后续种类多了,会把它们分开,做个索引列表啥的,下面的均以Java JDK1.8为基础

双端队列Deque(接口)

说明

  1. 支持两端元素插入和移除的线性集合,Java中的Deque是一个接口,继承于Queue接口,故需要其他类来实现,已知实现类有
    ArrayDeque,ConcurrentLinkedQueue,LinkedBlockingDeque,LinkedList
    故创建对象写法一般为(例):
Deque<Integer> queue  = new LinkedList<Integer>();

方法介绍

(接口方法,具体实现在不同的实现类中有多不同)
E为在此集合中保持的元素的类型
在这里插入图片描述

表格整理

方法类型适用对象具体名称
头/尾元素插入双端队列addFirst,addLast,offerFirst,offerLast
头/尾元素查询双端队列getFirst,getLast,peekFirst,peekLast
头/尾元素查询 + 弹出双端队列removeFirst,removeLast,pollFirst,pollLast
尾元素插入普通队列add,offer
头元素查询普通队列element,peek
头元素查询 + 弹出普通队列remove,poll
尾元素插入堆栈push
尾元素弹出堆栈pop
判断是否包含通用contains
获取元素个数通用size
删除指定元素的第一次出现通用remove(Object o)

疑问解答

  1. 为什么同一个接口中的方法还要分双端队列/队列/堆栈这些适用对象呢,不都是双端队列吗?
    • 双端队列的结构包含了普通队列和堆栈的的结构特点,有时候我们只是想把它当做普通队列或者堆栈来使用,为了避免错误操作,也为了看起来看起来更明显,默认使用对应的方法。实际上offerLast和offer的作用是一样的
  2. 同为插入元素,add和offer有什么区别?
    • 当前没有可用空间时,add会抛出IllegalStateException,而offer则回返回false,因此在使用有容量限制的双端队列时,offer通常是优于add的
  3. 同为元素查询,element,get和peek有什么区别?
    • element和get:两者实际上是一样的,element() 相当于 getFirst()
    • get和peek:当队列为空时,get会抛出NoSuchElementException异常,而peek会返回null
  4. 同为元素弹出,remove和poll有什么区别?
    • 当队列为空时,remove将抛出NoSuchElementException异常,而poll会返回null

双端队列Deque总结

  1. 提供插入、移除和检查元素的方法。每种方法都存在两种形式:一种形式在操作失败时抛出异常,另一种形式返回一个特殊值(null 或 false,具体取决于操作)。插入操作的后一种形式是专为使用有容量限制的 Deque 实现设计的;在大多数实现中,插入操作不能失败。 下表总结了上述 12 种方法:
    在这里插入图片描述
  2. 此接口扩展了 Queue 接口。在将双端队列用作队列时,将得到 FIFO(先进先出)行为。将元素添加到双端队列的末尾,从双端队列的开头移除元素。从 Queue 接口继承的方法完全等效于 Deque 方法,如下表所示:
    在这里插入图片描述
  3. 双端队列也可用作 LIFO(后进先出)堆栈。应优先使用此接口而不是遗留 Stack 类。在将双端队列用作堆栈时,元素被推入双端队列的开头并从双端队列开头弹出。堆栈方法完全等效于 Deque 方法,如下表所示:
    在这里插入图片描述
  4. 注意,在将双端队列用作队列或堆栈时,peek 方法同样正常工作;无论哪种情况下,都从双端队列的开头抽取元素。 此接口提供了两种移除内部元素的方法:removeFirstOccurrence 和 removeLastOccurrence。 与 List 接口不同,此接口不支持通过索引访问元素。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值