java优先队列--PriorityQueue

队列:现实中我们最常见的是,去医院挂号,去银行取钱,一般都需要排队,这就是队列,队列有一个最显著的特征: 先进先出,一般情况下,大多都是先到先办理,但是也是有特殊的情况,例如在医院,万一来个急诊的,一定是急诊的优先,或者在银行,来个VIP,有绿色通道。 这种特殊的情况下,就是队列中的特殊的队列:优先队列。它的实现方法:给入队的元素,赋予一个优先级,根据优先级,将其插入队列中,(不是插入队列的末尾)

比较器:根据优先级插入元素,这个过程一定需要进行比较它们的优先级,因此我们需要复写compare比较方法 ,一般情况下写一个匿名类实现comparator接口中compare方法的即可。下面有一个简单例子可供参考。

import java.util.Comparator;
import java.util.PriorityQueue;

/**
 * @author 
 *
 */
public class test1 {
 
	private int id;
	private String name;
	
	public test1(int id, String name) {
		this.id = id;
		this.name = name;
	}
	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}
	public String toString(){
		String st = id+" "+name;
		return st;
		
	}
	
	public static void main(String[] args) {
		//这个是匿名类实现Comparator接口 中compare方法。
		Comparator compare = new Comparator() {
			//定义id为他们的比较级
			public int compare(test1 number1,test1 number2) {
				if(number1.getId()<=number2.getId())
					return 1;
				else return -1;
			}
		};
		PriorityQueue priorityqueue = new PriorityQueue(compare);
	    test1 t1 = new test1(1, "张三");
	    test1 t2 = new test1(2, "张三");
	    test1 t3 = new test1(3, "张三");
	    test1 t4 = new test1(4, "张三");
	    test1 t5 = new test1(5, "张三");
	    priorityqueue.add(t1);
	    priorityqueue.add(t2);
	    priorityqueue.add(t3);
	    priorityqueue.add(t4);
	    priorityqueue.add(t5);
	    int number = priorityqueue.size();
	    for(int i=0;i

 

你可能感兴趣的:(java)