支持优先级的无界阻塞队列:默认情况下元素采取自然顺序升序排列,可以以自定义compareTo()方法来指定元素的排序规则。
demo:通过年龄比较大小,实现Comparable
实体
public class Person implements Comparable {
private String name;
private Integer age;
public Person(String name, Integer age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
//实现比较方法
@Override
public int compareTo(Object o) {
Person p = (Person) o;
return this.age - p.getAge();
}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age=" + age +
'}';
}
}
测试
public class Test {
public static void main(String[] args) {
PriorityBlockingQueue queue = new PriorityBlockingQueue();
queue.add(new Person("1",45));
queue.add(new Person("2",2));
queue.add(new Person("3",4));
queue.add(new Person("4",3));
System.out.println(queue);
}
}
结果:通过年龄排序
[Person{name='2', age=2}, Person{name='4', age=3}, Person{name='3', age=4}, Person{name='1', age=45}]