一.队列
队列是一种特殊的线性表,它只允许在表的前端进行删除操作,而在表的后端进行插入操作。
JDK中,LinkedList类实现了Queue接口,可以当Queue使用,以下演示队列(Queue)的用法:
import java.util.Arrays;
import java.util.Stack;
import java.util.ArrayList;
import java.util.LinkedList;
import java.util.Queue;
public class demo {
// 尽量使用offer()方法添加元素,使用poll()方法移除元素。add()和remove()方法在失败的时候会抛出异常。
public static void main(String[] args) {
// 创建队列
Queue<Integer> q = new LinkedList<>();
Queue<String> q1 = new LinkedList<String>();
// 添加元素
q.offer(1);
q1.offer("a");
q1.offer("b");
// 输出队列元素
System.out.print("输出队列q1元素: ");
for (String s : q1) {
System.out.print(s + " ");
}
System.out.println();
// 查询第一个元素
System.out.println("the first element is: " + q1.element());
System.out.println("the first element is: " + q1.peek());
System.out.print("输出队列q1元素: ");
for (String s : q1) {
System.out.print(s + " ");
}
System.out.println();
// 移除第一个元素
q1.poll();
System.out.print("输出队列q1元素: ");
for (String s : q1) {
System.out.print(s + " ");
}
}
} offer,add 区别:添加元素
一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。
这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。
poll,remove 区别:移除元素
remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似, 但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。
peek,element区别:查询头部元素
element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null。
总结:尽量使用offer()方法添加元素,使用poll()方法移除元素,使用peek()方法查询头部元素。add()和remove()和element()方法在失败的时候会抛出异常。
二.栈
栈是一种只能在一端进行插入或删除操作的线性表。(先进后出线性表)
Stack<String> staffs =newStack<String>();
java中的Stack继承Vector
import java.util.Stack;
public class demo {
public static void main(String[] args) {
// 创建栈
Stack s = new Stack();
// empty()判断栈是否为空
System.out.println(s.empty());
// push()进栈
s.push(new Integer(1));
s.push(2);
// peek()查找栈的顶值
System.out.println(s.peek());
// pop()出栈
s.pop();
System.out.println(s.peek());
}
}
- - - - - 2019.12.22

京公网安备 11010502036488号