1
在我的程序中,我有一個邊緣集合,它們必須按重量排序。去除元素的最佳集合
程序中的某處我必須處理集合,並且每次我必須刪除最大集合。
我已經使用了一個ArrayList,但是我正在尋找一個更好的解決方案(時間效率):
public class Edge implements Comparable<Edge> {
private int weight;
public void setWeight(int weight) {
this.weight = weight;**
}
@Override
public int compareTo(Edge o) {
return o.weight - this.weight;
}
}
我做了什麼:
private ArrayList<Edge> listOfEdges = new ArrayList<>();
// i suppose here adding some edges in the list
Collections.sort(listOfEdges);
for (int i = 0; i < listOfEdges.size(); i++) {
System.out.println(listOfEdges.get(i).getWeight() + " ");
}
我怎麼能得到&刪除列表的最大值。 我已經測試了一個treeSet,但邊緣可以具有相同的權重,那麼接受重複值的完美Sorted Collection是什麼。
謝謝
各自的方法。如果它進行排序,然後只是刪除最後一個項目,或者至少從最終迭代向後 –
也許優先級隊列或最大堆?可以快速刪除並排序 –
謝謝@ cricket_007,我將使用priorityQueue。 –