Person类
public class Person {
@Override
public String toString() {
return this.getName()+" "+this.getAge();
}
private String name;
private int age;
public Person(String name, int age) {
this.age = age;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
比较器类
import java.util.Comparator;
public class Comparator1 implements Comparator{
private int compare(String name1, String name2){
return name1.compareTo(name2);
}
private int compare(int age1, int age2){
if(age1 > age2)
return 1;
else if(age1 == age2)
return 0;
else
return -1;
}
public int compare(Person p1, Person p2) {//接口的方法
String name1 = p1.getName();
String name2 = p2.getName();
int age1 = p1.getAge();
int age2 = p2.getAge();
return (compare(name1, name2) == 0 ? compare(age1, age2) : compare(name1, name2));
}
}
测试类
import java.util.Iterator;
import java.util.PriorityQueue;
public class Tester {
public static void main(String[] args) {
Person p1 = new Person("a", 4);
Person p2 = new Person("b", 2);
Person p3 = new Person("c", 1);
Person p4 = new Person("a", 1);
Person p5 = new Person("a", 6);
Person p6 = new Person("a", -1);
PriorityQueue pq = new PriorityQueue(20 ,new Comparator1());
pq.add(p1);
pq.add(p2);
pq.add(p3);
pq.add(p4);
pq.add(p5);
pq.add(p6);
Iterator it = pq.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
while(!pq.isEmpty()){
System.out.println(pq.poll());//前面对toString()进行了重载
System.out.println("sdfsd");
}//这里要注意,对优先队列用迭代器遍历,顺序不是按照优先队列的顺序输出
}
}