集合中篇—栈与队列区块链

集合中篇—栈与队列


 

1. 准备

Java的集合实现了栈与队列,我们直接调用就可以实现功能,可是平时就见过Queue、Stack、Deque这些字眼,完全不知道怎么回事,下面就来梳理一下他们的关系,先来看类图(这里简化并只关联了所需要提到的类或接口),下面只说明之前没有提到的内容,没有看过前篇的同学赶紧充电  

  • Stack类(栈),继承了Vector线程安全类,现在不推荐使用,推荐ArrayDeque
  • Queue接口(队列),有Collection方法,而且也新增了自己的方法
  • Deque接口(双向队列),继承了Queue,因为是双向队列,所以可以实现队列和栈的操作
  • 我们之前学过的LinkedList以及ArrayDeque实现Deque接口,即可以作为队列和栈使用


 

2. Queue

Queue接口不同之处在于同一个功能他有两套方法,两套方法区别于一套是实现返回值,另一套是抛出异常

 Throw ExceptionReturn value
增加add(e)offer(e)
删除remove()poll()
检查element()peek()

后面讲解基于抛出异常的方法


 

3. Deque

double ended queue,意思是双向队列,所以该接口多了操作方法,用于操作头尾,下面讲解部分方法,其余自行查看

方法解释
addFirst(E e)队头增加元素
addLast(E e)队尾增加元素
removeFirst()队头删除元素,并返回该元素
removeLast()队尾删除元素,并返回该元素
peekFirst()返回队头元素,不删除
peekLast()返回队尾元素,不删除


 

4. LinkedList

  • 之前我们就学过LinkedList了,底层是双向链表,想不到还支持栈和队列,而且有了头尾操作,实现栈和队列就简单了,我们比较熟悉他,所以栈和队列就基于LinkedList来讲解
  • 栈和队列用头尾操作实现稍微想一下就会理解的,后面列出表格对照

 

4.1 栈

先进后出的结构,想象成羽毛球筒就行了,先放进去的羽毛球都是最后才能拿出来的

具体实现

public static void main(String[] args) {
	
 	LinkedList linkedList = new LinkedList(); 
	
 	linkedList.addFirst(1);
 	linkedList.addFirst(2);
 	linkedList.addFirst(3);
 	linkedList.addFirst(4);
 	
 	linkedList.removeFirst();
 	
 	//一定要用foreach方法,上篇有解释
 	for(Object i : linkedList){
 		System.out.println(i);
 	}
}
3
2
1

 

4.2 队列

public static void main(String[] args) {
	
 	LinkedList linkedList = new LinkedList(); 

    linkedList.addLast(1);
    linkedList.addLast(2);
    linkedList.addLast(3);
    linkedList.addLast(4);

    linkedList.removeFirst();

    //一定要用foreach方法,上篇有解释
    for(Object i : linkedList){
        System.out.println(i);
    }
}
2
3
4

 

4.3 对照表

功能方法
进栈addFirst(e)
出栈remoceFirst()
取栈顶peekFirst()

队列

功能方法
进队addLast(e)
出队removeFirst()
取队首peekFirst()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值