保安日记之标准库中的栈及队列基本操作

一、前言

之前的两篇博客我们根据栈和队列后进先出、先进先出的特点对这两种数据结构用顺序表和链表分别进行了实现,也有了一定的了解,这篇我们就来介绍一下标准库中的栈和队列

二、栈

2.1 标准库中的栈

标准库中的Stack是一个class

2.2 栈的操作

public class Main {
    public static void main(String[] args) {
        Stack<Integer> stack=new  Stack<>();
        //入栈
        stack.push(1);
        stack.push(2);
        stack.push(3);
        stack.push(4);
        Integer cur=stack.peek();
        System.out.println(cur);
        
        while(!stack.empty()){
            Integer cur=stack.pop();
            System.out.println(cur);
        }
    }
}

2.3 栈操作的注意事项

1.标准库中的stack如果针对空栈pop或者peep就会抛出空栈异常.
2.由于标准库中的Stack是继承自Vector的类,Vector能执行的操作,Stack也一样可以,Stack并没有起到限制灵活性的效果,反而增加了代码的复杂程度,实际使用Stack尽量避免这些本不该是Stack的操作,如下:

        stack.add(2,100);
        stack.get(0);
        stack.contains(2);

三、队列

3.1 标准库中的队列

标准库中的队列是一个接口,只能实例化一个实现Queue接口的类,标准库中的队列是基于链表实现的

3.2 队列的操作

public class Main {
    public static void main(String[] args) {
        Queue<Integer> queue = new LinkedList<>();
        queue.offer(1);
        queue.offer(2);
        queue.offer(3);
        queue.offer(4);
        Integer cur=queue.peek();
        System.out.println(cur);
        
        while(!queue.isEmpty()){
            Integer cur=queue.poll();//元素为空返回null
            //Integer cur=queue.remove();//元素为空抛出异常
            System.out.println(cur);
        }
    }
} 

3.3 队列操作的注意事项

1.与只提供一组操作的栈不同,队列提供两组操作,他们的基本操作方法命名规则也是不统一,如下图,根据返回的方式不同标准库为队列设计了两组方法,由上至下分别是:入队列,出队列,取队首元素:

抛出异常返回特殊值
add(e)offer(e)
remove()poll()
element()peek()

2…栈和队列中,判空操作和一般的List风格也不一致:
当判断一个栈是否为空时,使用stack.empty()与stack.isEmpty()均可,只是两个方法存在的类不同.
队列中则没有empty方法,判空就使用queue.isEmpty()即可.

至此,关于标准库中栈和队列的基本操作方法就介绍完毕了,栈和队列作为我们解决问题的重要数据结构我们在下条博客会分析一些基于栈和队列展开的代码编程问题.

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值