使用比较器自定义 PriorityQueue 排序
PriorityQueue 提供排序功能,但要指定排序顺序,必须实现自定义比较器函数。
自定义比较器排序
要自定义排序行为,请使用采用 Comparator
public class StringLengthComparator implements Comparator<String> { @Override public int compare(String x, String y) { return Integer.compare(x.length(), y.length()); } }
示例:按字符串长度排序
考虑以下代码:
Comparator<String> comparator = new StringLengthComparator(); PriorityQueue<String> queue = new PriorityQueue<>(10, comparator); queue.add("short"); queue.add("very long indeed"); queue.add("medium"); while (!queue.isEmpty()) { System.out.println(queue.remove()); }
此代码创建一个 PriorityQueue,按字符串的长度对字符串进行排序,较短的字符串给予较高的值
Offer 与 Add 方法
虽然“offer”和“add”是不同的接口方法实现,但它们都向 PriorityQueue 添加一个元素。对于 PriorityQueue,offer 方法只需调用 add 方法。如果 PriorityQueue 已满并且无法接受新元素,这两种方法都有可能引发异常。
总而言之,对于自定义排序,请实现一个比较器函数并将其作为参数传递给 PriorityQueue 构造函数。这允许根据您自己的比较逻辑进行排序,例如按字符串长度或任何其他所需的指标排序。
以上是如何自定义 Java PriorityQueue 的排序?的详细内容。更多信息请关注PHP中文网其他相关文章!