如何将数组的数据直接放入PriorityQueue

Ist*_*tso 2 java queue collections

你如何将数组的数据直接放入PriorityQueue哪个实现Queue接口?

ContestantFilter [] contestantFilter = new ContestantFilter [50];
contestantFilter [0] = new ContestantFilter("Agnesy Pricillia","IF110026");
contestantFilter [1] = new ContestantFilter("Ellen Shie ","IF110103");
contestantFilter [2] = new ContestantFilter("Wilma Yue Gunawan","EL110021");
.................
.................

Queue<ContestantFilter> queue = new PriorityQueue<ContestantFilter>(1,
                new Comparator<ContestantFilter>() {
                     @Override
                    public int compare(ContestantFilter t1, ContestantFilter t2) {
                        return t1.getID().compareTo(t2.getID());}});
Run Code Online (Sandbox Code Playgroud)

我试过

for(ContestantFilter c : contestantFilter ){ queue.add(c);}
Run Code Online (Sandbox Code Playgroud)

但它很慢。

就像是 :

queue = ((Queue<ContestantFilter >) Arrays.asList(contestantFilter );
Run Code Online (Sandbox Code Playgroud)

铸造不起作用。

Lui*_*oza 5

PriorityQueue#addAll创建队列实例后使用方法:

//... is a replacement for your custom Comparator<ContestantFilter>
Queue<ContestantFilter> queue = new PriorityQueue(...);
queue.addAll(Arrays.asList(contestantFilter));
Run Code Online (Sandbox Code Playgroud)

  • 这不是“直接”方法。它首先将数组转换为列表。当然,即使在 Java 11 中也没有“直接”方法。 (2认同)