java创建一个空栈_Java创建栈和队列的几种方式

1.创建队列

1.1 使用Queue接口 , Queue的实现类有LinkedList和PriorityQueue。最常用的实现类是LinkedList。

Queue的六种方法:

add()和 offer()

向队列中添加元素,将元素压入队尾。当超出容量时add()会抛出异常 , offer()会返回false。

remove() 和 poll()

移除元素,将元素从队头移出。当当前容量为0执行移除操作时,remove()会抛出异常 , poll()会返回false。

element() 和 peek()

获取队头元素,当前容量为0时。element()会抛出异常 , peek()会返回null。

2.创建栈

使用Stack类,Stack是Java中本身具有的集合类型,所包含的方法包括:

boolean        isEmpty() // 判断当前栈是否为空

synchronized E        peek() //获得当前栈顶元素

synchronized E        pop() //获得当前栈顶元素并删除

push(E object) //将元素加入栈顶

synchronized int      search(Object o)  //查找元素在栈中的位置,由栈低向栈顶方向数

3.Deque接口。

Deque是一个双端队列接口,继承自Queue接口,Deque的实现类是LinkedList、ArrayDeque、LinkedBlockingDeque,其中LinkedList是最常用的。

1 public static voidmain(String[] args) {2 //使用offer添加元素,得到

3 Deque test = new LinkedList<>();4 System.out.println("测试offer相关函数**************************************");5 test.offer(1);6 System.out.println(test);7 test.offerFirst(0);8 System.out.println(test);9 //test.offerLast(2);

10 test.offer(2);11 System.out.println(test);12 /**

13 * offer() 与 offerLast()都是将元素添加到右边即队尾14 * offerFirst()将元素添加到左边即队头15 * push()是将元素压在左边队头16 */

17 test.offer(3);18 test.offer(4);19 test.offer(5);20 test.offer(6);21 test.offer(7);22 test.offer(8);23 test.offer(9);24 test.offer(10);25 test.offer(11);26 test.offer(12);27

28 System.out.println(test);29 test.poll();30 System.out.println(test);31 test.pollLast();32 System.out.println(test);33 test.pollFirst();34 System.out.println(test);35 /**

36 * poll()与pollFirst()等价,都是将队头元素移除37 * pollLast()是将队尾元素移除38 */

39 System.out.println("测试peek,element相关函数****************************************");40 int temp =test.peek();41 System.out.println(temp);42 temp =test.peekLast();43 System.out.println(temp);44 temp =test.element();45 System.out.println(temp);46 temp = test.pop(); //这时候调用pop()返回的是队头元素

47 System.out.println(temp);48 System.out.println(test);49 System.out.println(test.contains(6)); //还有contain()函数判断是否包含某元素

50 /**

51 * peek()和peekFirst()都是返回队头元素52 * peekLast()是返回队尾元素53 */

54 System.out.println("测试remove相关函数**********************************************");55 test.remove();56 System.out.println(test);57 test.removeFirst();58 System.out.println(test);59 test.removeLast();60 System.out.println(test);61 /**

62 * remove()和remove()是移除队头元素63 * removeLast()是移除队尾元素64 */

65 int pop =test.pop();66 System.out.println(pop);67 System.out.println(test);68 /**

69 * 记住当是队列时,使用pop()弹出队头的元素70 */

71 test.push(5);72 System.out.println(test);73 test.offer(5);74 System.out.println(test);75 test.poll();76 System.out.println(test);77 test.add(11);78 System.out.println(test);79 test.addLast(12);80 System.out.println(test);81 test.addFirst(13);82 System.out.println(test);83 /**

84 * add()和addLast()将元素加在右边,即队尾,和offer()方法等价85 * addFirst()将元素加在左边,即队头86 */

87 System.out.println();88 System.out.println();89 System.out.println();90 System.out.println();91 System.out.println("*********************************测试Deque实现堆栈相关函数********************************");92 }

运行结果:

测试offer相关函数**************************************

[1]

[0, 1]

[0, 1, 2]

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

[2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

测试peek,element相关函数****************************************

2

11

2

2

[3, 4, 5, 6, 7, 8, 9, 10, 11]

true

测试remove相关函数**********************************************

[4, 5, 6, 7, 8, 9, 10, 11]

[5, 6, 7, 8, 9, 10, 11]

[5, 6, 7, 8, 9, 10]

5

[6, 7, 8, 9, 10]

[5, 6, 7, 8, 9, 10]

[5, 6, 7, 8, 9, 10, 5]

[6, 7, 8, 9, 10, 5]

[6, 7, 8, 9, 10, 5, 11]

[6, 7, 8, 9, 10, 5, 11, 12]

[13, 6, 7, 8, 9, 10, 5, 11, 12]

Deque使用总结:

3.1添加操作相关函数:

offer()  :将元素添加到队尾,即添加到右侧

offerFirst():添加到队头

offerLast():添加到队头

add():将元素添加到队尾,即添加到右侧

addFirst():添加到队头

addLast():添加到队尾

push():将元素添加到队头,即添加到左侧

3.2 获取头部元素peek相关操作

peek() : 返回队头元素,即最左边的元素

peekFirst():返回队头元素

peekLast():返回队尾元素,即最右边的元素

element():返回队头元素,即最左边的元素

pop():返回队头元素即最左边的元素,并将其从队列中删除

3.3 remove相关函数

remove():移除队头元素,即最左边的元素

removeFirst():移除队头元素

removeLast():移除队尾元素

4.3 poll相关函数

poll():返回队头元素并移除,即最左边的元素

pollFirst():返回队头元素,即最左边的元素

pollLast():返回队尾元素,即最右边的元素

总结:当实现队列时,使用offer()进行添加操作 , 使用poll()进行出队操作,offer()和poll()要搭配使用

当实现堆栈时,使用push()进行添加操作,使用pop()进行出队操作,push()和pop()要搭配使用

peek()是返回队头元素或栈顶元素即最左边的元素。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值