java Stack(栈)类、Queue和Deque队列

2023-07-10,,

1. java Stack
特性是:LIFO(后进先出)先进后出,最先进入的在栈底。
Stack底层也是通过数组实现的,同时也是线程安全的

Stack stack=new Stack();
//添加 (插入数据到栈顶)
stack.push(10L);
//判罚是否为空
stack.empty();
System.out.println(stack.empty());
//获取栈顶元素
Object peek = stack.peek();
System.out.println(peek);
//删除(出栈)
Object pop = stack.pop();
System.out.println(pop);
//获取元素的位置
int search = stack.search(10L);
System.out.println(search);//从1开始
System.out.println(stack);

2.Queue单向队列
特性是:FIFO(先进先出) ,最先进入的在队首。插入到队尾

//LinkedList实现了Queue接口 可以使用LinkedList
Queue queue=new LinkedList();
//Queue还有个直接子类PriorityQueue 自带扩容机制、无边界
Queue priorityQueu=new PriorityQueue();
//插入到队列末尾
priorityQueu.offer(10L);
priorityQueu.offer(40L);
System.out.println(priorityQueu);
//查看队首 不删除
Object peek = priorityQueu.peek();
System.out.println(peek);
//抛出 删除队首
Object poll = priorityQueu.poll();
System.out.println(poll);

3. Deque双向队列
ArrayDeque是无初始容量的双端队列,作为队列使用 ArrayDeque作为队列时的效率比LinkedList要高。
LinkedList则是双向链表。作为栈使用

//用作栈来使用
Deque stack=new LinkedList();
stack.addFirst(12);//添加元素
System.out.println(stack.peekFirst());//获取栈顶元素
System.out.println(stack.pollFirst());//获取并移除栈顶
//队列使用
Deque dequ=new ArrayDeque();
dequ.addLast(12); //添加元素队尾
System.out.println(dequ.peekFirst());//获取队首
System.out.println(dequ.pollFirst());//获取并移除队首
Queue	Deque
增加
add add、addFirst、addLast
offer offer、offerFirst、offerLast
移除
remove remove、removeFirst、removeLast
poll pop、poll、pollFirst、pollLast
获取
element element、getFirst、getLast
peek peek、peekFirst、peekLast
1、add和offer区别
add() : 添加元素,如果添加成功则返回true,如果队列是满的,则抛出异常
offer() : 添加元素,如果添加成功则返回true,如果队列是满的,则返回false
2、remove和poll
remove() : 移除队列头的元素并且返回,如果队列为空则抛出异常
poll() : 移除队列头的元素并且返回,如果队列为空则返回null
Deque新增了一个pop方法,也是移除队列头的元素并且返回,如果队列为空则抛出异常。
3、element和peek
element() :返回队列头元素但不移除,如果队列为空,则抛出异常
peek() :返回队列头元素但不移除,如果队列为空,则返回null
因此,增加推荐使用add,移除推荐使用poll,获取元素推荐使用peek。

区别:
Queue是单向队列,Deque 是double ended queue的缩写是双向队列。
Queue只能作为队列 , Deque可以作为栈也可以作为队列使用;
Queue以及Deque都是继承于Collection,Deque是Queue的子接口。

stack、Queue、Deque 作为Collection,可以使用集合的常用方法。

java Stack(栈)类、Queue和Deque队列的相关教程结束。

《java Stack(栈)类、Queue和Deque队列.doc》

下载本文的Word格式文档,以方便收藏与打印。