PriorityQueue 中的自定义排序顺序
PriorityQueue 是一个 Java 集合类,提供了一种默认的排序机制,可以根据元素的元素升序对元素进行排序。自然排序。但是,可以自定义此排序行为并根据特定条件进行排序。
让 PriorityQueue 根据需要进行排序
要在 PriorityQueue 中实现自定义排序,请使用构造函数需要比较器比较器作为参数。比较器比较元素并确定它们的顺序。例如,要根据字符串的长度升序对字符串进行排序:
Comparator<String> comparator = (x, y) -> x.length() - y.length(); PriorityQueue<String> queue = new PriorityQueue<>(comparator);
Offer 与 Add 方法
PriorityQueue 提供了两种添加元素的方法: Offer( )并添加()。虽然功能相似,但它们有细微的差别。如果成功添加元素,offer() 返回 true;如果队列已满,则返回 false。相比之下,add() 直接将元素添加到队列中,如果队列已满,则抛出 IllegalStateException。
对于无界的 PriorityQueue,这两种方法是等效的。但是,在有界优先级队列中,offer() 可用于在尝试将元素入队之前检查是否可以添加该元素。
示例:字符串长度排序
考虑以下示例,您希望创建一个 PriorityQueue,根据字符串对字符串进行排序length:
public class StringLengthComparator implements Comparator<String> { @Override public int compare(String x, String y) { return x.length() - y.length(); } } public class PriorityTest { public static void main(String[] args) { PriorityQueue<String> queue = new PriorityQueue<>(new StringLengthComparator()); queue.offer("medium"); queue.offer("short"); queue.offer("very long indeed"); while (!queue.isEmpty()) { System.out.println(queue.poll()); } } }
输出:
short medium very long indeed
此示例演示如何定义自定义比较器并使用 PriorityQueue 构造函数实现基于 String 长度的排序。
以上是如何在Java PriorityQueue中实现自定义排序?的详细内容。更多信息请关注PHP中文网其他相关文章!