温馨提示×

java优先队列怎么自定义排序

小亿
393
2023-06-19 13:44:55
栏目: 编程语言

Java优先队列可以通过实现Comparator接口来自定义排序。Comparator接口有一个compare方法,用于比较两个元素的大小。在compare方法中,我们可以根据自己的需求来定义比较规则。

下面是一个例子,我们定义一个Person类,包含姓名和年龄两个属性,然后按照年龄从小到大的顺序来排序:

import java.util.Comparator; import java.util.PriorityQueue; public class Main { public static void main(String[] args) { PriorityQueue<Person> queue = new PriorityQueue<>(new Comparator<Person>() { @Override public int compare(Person o1, Person o2) { return o1.getAge() - o2.getAge(); } }); queue.offer(new Person("Alice", 25)); queue.offer(new Person("Bob", 20)); queue.offer(new Person("Charlie", 30)); while (!queue.isEmpty()) { System.out.println(queue.poll()); } } static class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + '}'; } } } 

输出结果为:

Person{name='Bob', age=20} Person{name='Alice', age=25} Person{name='Charlie', age=30} 

可以看到,按照年龄从小到大的顺序来排序了。

0