制定一个网站建设方案,上海建设工程监理行业协会网站,网站建设手机端,企业管理咨询工作内容PriorityQueue类
Java中的PriorityQueue是一个基于优先级堆的无界优先级队列。它是一个队列#xff0c;可以按照元素的优先级顺序对元素进行排序#xff0c;并且允许快速访问具有最高优先级的元素。它实现了Queue接口#xff0c;继承了AbstractQueue类。
主要函数和方法可以按照元素的优先级顺序对元素进行排序并且允许快速访问具有最高优先级的元素。它实现了Queue接口继承了AbstractQueue类。
主要函数和方法 构造函数 PriorityQueue() // 创建一个初始容量为11的优先级队列默认自然顺序排序
PriorityQueue(int initialCapacity) // 创建具有指定初始容量的优先级队列默认自然顺序排序
PriorityQueue(Collection? extends E c) // 创建包含指定集合元素的优先级队列默认自然顺序排序
PriorityQueue(int initialCapacity, Comparator? super E comparator) // 创建具有指定初始容量和比较器的优先级队列核心方法 add(E e) 或 offer(E e)将指定的元素插入队列。peek()返回队列的头部最高优先级元素如果队列为空则返回 null。poll()移除并返回队列的头部最高优先级元素如果队列为空则返回 null。remove(Object o)从队列中移除指定的元素如果存在的话。clear()移除队列中的所有元素。size()返回队列中的元素数量。isEmpty()检查队列是否为空。iterator()返回一个迭代器可以按照元素的顺序遍历队列。
使用示例 使用默认自然排序 PriorityQueueInteger pq new PriorityQueue();
pq.offer(5);
pq.offer(2);
pq.offer(8);
pq.offer(1);// 遍历队列并按优先级顺序访问元素
while (!pq.isEmpty()) {System.out.println(pq.poll());
}使用自定义比较器排序 // 自定义一个比较器以字符串长度作为优先级排序
ComparatorString lengthComparator Comparator.comparingInt(String::length);
PriorityQueueString pq new PriorityQueue(lengthComparator);pq.offer(apple);
pq.offer(banana);
pq.offer(orange);
pq.offer(kiwi);// 遍历队列并按长度顺序访问元素
while (!pq.isEmpty()) {System.out.println(pq.poll());
}PriorityQueue 可以用于实现任务调度、事件处理等场景能够方便地处理具有优先级的元素集合。在使用过程中需要注意比较器的实现确保元素能够按照预期的优先级排序。
Comparator.comparingInt(String::length) 创建了一个比较器根据字符串的长度进行比较。这个比较器是按照长度来确定优先级的所以较长的字符串会被认为是“更大”的更高优先级排在前面。
这是因为在标准的升序排序中较大的元素在这种情况下是指长度更长的字符串会排在较小的元素前面。这符合通常的自然排序规则。所以当你使用Comparator.comparingInt(String::length)创建的比较器时它将会把字符串长度较长的排在前面。
如果你想要反转这种顺序即短的字符串优先级高你可以使用 reversed() 方法来反转比较器的顺序。例如
ComparatorString lengthComparator Comparator.comparingInt(String::length).reversed();通过调用 reversed() 方法你可以修改比较器的排序顺序使较短的字符串排在前面从而改变优先级的顺序。