java 中的Stack、Queue、Deque

1.Stack

java集合框架中没有Stack接口,仅仅有java早期遗留下来的一个Stack类。

Deque stack = new ArrayDeque();

public Stack extends Vector

因为集成自Vector,所以Stack类是同步的,效率不高。官方一般建议这样使用ArrayDeque代替Stack

Java.util.Stack

2.Queue接口


简单介绍几个方法的区别:

offer,add区别:

一些队列有大小限制,因此如果想在一个满的队列中加入一个新项,多出的项就会被拒绝。

这时新的 offer 方法就可以起作用了。它不是对调用 add() 方法抛出一个 unchecked 异常,而只是得到由 offer() 返回的 false。 

 

poll,remove区别:

remove() 和 poll() 方法都是从队列中删除第一个元素。remove() 的行为与 Collection 接口的版本相似,

但是新的 poll() 方法在用空集合调用时不是抛出异常,只是返回 null。因此新的方法更适合容易出现异常条件的情况。

 

peek,element区别:

element() 和 peek() 用于在队列的头部查询元素。与 remove() 方法类似,在队列为空时, element() 抛出一个异常,而 peek() 返回 null


3. Deque接口

Deque是Queue的子接口。
Deque有两个比较重要的类:ArrayDeque和LinkedList
建议 使用栈时,用ArrayDeque的push和pop方法;
  使用队列时,使用ArrayDeque的add和remove方法。

4.优先队列PriorityQueue

如果不提供Comparator的话,优先队列中元素默认按自然顺序排列,也就是数字默认是小的在队列头,字符串则按字典序排列。

import java.util.Comparator;  
import java.util.PriorityQueue;  
import java.util.Queue;  
  
public class Main {  
    private String name;  
    private int population;  
    public Main(String name, int population)  
    {  
        this.name = name;  
        this.population = population;  
    }  
    public String getName()  
    {  
         return this.name;  
    }  
  
    public int getPopulation()  
    {  
         return this.population;  
    }  
    public String toString()  
    {  
         return getName() + " - " + getPopulation();  
    } 
    
    public static void main(String args[])  
    {  
        Comparator
OrderIsdn = new Comparator
(){ @Override public int compare(Main o1, Main o2) { int numbera = o1.getPopulation(); int numberb = o2.getPopulation(); return Integer.compare(numbera, numberb); } }; Queue
priorityQueue = new PriorityQueue
(11,OrderIsdn); Main t1 = new Main("t1",1); Main t3 = new Main("t3",3); Main t2 = new Main("t2",2); Main t4 = new Main("t4",0); priorityQueue.add(t1); priorityQueue.add(t3); priorityQueue.add(t2); priorityQueue.add(t4); System.out.println(priorityQueue.poll().toString()); } }
 
  

结果 t4 - 0





你可能感兴趣的:(java)