Java Stack与Queue详解

网友投稿 235 2023-01-16

Java Stack与Queue详解

一、Stack

示例:

package StackPack;

import java.util.Stack;

public class StackDemo {

public static void main(String[] args) {

Stack stack=new Stack<>();

for(int i=0;i<10;i++)

{

stack.push(i*2);

}

//[0, 2, 3, 4, 6, 8, 12, 14, 16, 18]

System.out.println(stack.peek()); //18

System.out.println(stack.search(14)); //以1为基数,

// 返回最近出现位置到栈顶距离,因此为3

while(!stack.isEmpty())

{

System.out.print(stack.pop()+"\t");

}

System.out.println();

System.out.println(stack.search(1)); //找不到,返回-1

}

}

二、Queue

由于Queue只是个接口,因此没有构造方法

从这里可以看到Queue从Collection中继承了add,remove等方法,但是我们应该尽量使用offer替换add,使用poll来替换remove

使用Queue特有的方法offer,poll的好处是可以通过判断返回值判断操作是否成功完成,而add,remove则会在失败时抛出异常

示例:

package QueuePack;

import java.util.*;

public class QueueDemo {

public static void main(String[] args) {

Queue queue=new ArrayDeque<>();

for(int i=0;i<10;i++)

{

queue.offer(i*2);

}

Iterator it=queue.iterator();

while(it.hasNext())

{

System.out.print(it.next()+"\t"); //0 2 4 6 8 10 12 14 16 18

}

System.out.println();

System.out.println(queue.peek()); //0

System.out.println(queue.poll()); //0,同时队列变成[2,4,6,8,10,12,14,16,18]

}

}

示例:十进制转二进制

因为十进制转二进制是每次模2取余直到num=http://0,然后将余数反转即可得到转换的结果,因此可以利用双向队列Deque

代码

package QueuePack;

import java.util.*;

public class QueueDemo {

public static void main(String[] args) {

Queue queue=new ArrayDeque<>();

for(int i=0;i<10;i++)

{

queue.offer(i*2);

}

Iterator it=queue.iterator();

while(it.hasNext())

{

sNkkgUar System.out.print(it.next()+"\t"); //0 2 4 6 8 10 12 14 16 18

sNkkgUar }

System.out.println();

System.out.println(queue.peek()); //0

System.out.println(queue.poll()); //0,同时队列变成[2,4,6,8,10,12,14,16,18]

}

}

Queue是单队列,Deque是双向队列,根据需要使用。

PS:此为学习笔记,如有错误,请友好指正,感谢。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:淘口令免费api(淘口令网站)
下一篇:中山佳丰物流查询(中山佳吉物流电话查询)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~