栈和队列
栈
Java中有Stack类,但现在已经过时了,不推荐使用。一个更好的方法是使用Deque接口实现栈(Deque意为双端队列,double ended queue)。具体来说又有ArrayDeuqe和LinkedList两种具体类来实现,两者的区别体现在底层分别使用数组和链表来实现。
常用的重要函数包括:
push(); // 向stack栈顶压入一个元素
pop(); // 从stack中弹出栈顶元素
peek(); // 查看stack中栈顶元素,不弹出
1 | // deque接口实现stack |
队列
使用Queue接口实现,具体的实现类有LinkedList。
常用的重要函数包括:
向队列尾部添加元素:
offer(); // 如果因为长度不够等原因插入失败,返回false
add(); // 如果插入失败会抛出异常:IllegalStateException;
查看头部元素 ,不改变队列:
peek(); // 如果队列中没有元素,返回null;
element(); // 如果队列中没有元素,则抛出异常:NoSuchElementException;
取出队首元素(返回队首元素,队列中不再包含此元素):
poll(); // 会在没元素时返回null;
remove(); // 会在没元素时抛出异常:NoSuchElementException;
1 | // queue接口实现queue |
小根堆
PriorityQueue类实现了优先队列,默认是一个小根堆的形式,如果要定义大根堆,需要在初始化的时候加入一个自定义的比较器。
1 | // PriorityQueue 实现heap |
大根堆
1 | // maxHeap |
------ 本文结束感谢您的阅读 ------
请我一杯咖啡吧!
微信打赏