想了解为什么PriorityQueue.addAll方法没有考虑comparator

问题描述 投票:0回答:0

我编写了以下代码以将整数集合添加到优先级队列中。我对输出感到困惑

public static void main(String[] args) {
    int[] pipes = {4, 3, 2, 6 };
    PriorityQueue<Integer> minHeap = new PriorityQueue<>(new Comparator<Integer>() {
        @Override
        public int compare(Integer o1, Integer o2) {
            return o1-o2;
        }
    });
    minHeap.addAll(IntStream.of(pipes).boxed().collect(Collectors.toList()));
    System.out.println(minHeap);
}

我希望输出为

[2, 3, 4, 6]
,但打印为
[2, 4, 3, 6]
。有人能解释一下为什么 3 没有在 4 之前打印出来吗??我在 addAll 方法上做错了什么吗??

priority-queue min-heap
© www.soinside.com 2019 - 2024. All rights reserved.