gpt4 book ai didi

Java - 最大堆中整数的非字典序倒序

转载 作者:行者123 更新时间:2023-12-01 11:55:32 25 4
gpt4 key购买 nike

Collections.reverseOrder() 比较器在与最大堆 toArray 函数一起使用时进行字典序排序。

示例:4, 35, 41 将打印为 41, 4, 35。

我想要的是它打印为 41, 35, 4

PriorityQueue<Integer> maxHeap = new PriorityQueue<>(Collections.reverseOrder());
maxHeap.add(4);

//Prints [4]
System.out.println("MaxHeap:"+ Arrays.toString(maxHeap.toArray()));

maxHeap.add(35);

//Prints [35, 4]
System.out.println("MaxHeap:"+ Arrays.toString(maxHeap.toArray()));

maxHeap.add(41);

//Prints [41, 4, 35]
System.out.println("MaxHeap:"+ Arrays.toString(maxHeap.toArray()));

最佳答案

Integer 的默认比较器不是按字典顺序排列的。

问题是 PriorityQueue 使用的内部数组(这是 toArray() 返回的)没有排序。

要按排序顺序获取元素,您需要调用 poll() PriorityQueue 中的方法,直到没有更多元素。这就是 PriorityQueue 根据定义的运作方式。

关于Java - 最大堆中整数的非字典序倒序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61767550/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com