[英]best collection for removing element
在我的程序中,我有一組邊緣,它們必須按重量排序。
我必須在程序中的某個地方處理集合,並且每次必須刪除集合的最大值。
我已經使用了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是什么。
謝謝
在我的程序中,我有一組邊緣,它們必須按權重排序...我已經使用了ArrayList,但是我正在尋找更好的解決方案(時間效率):
您正在尋找二進制樹之類的結構,例如堆或優先級隊列。 一旦指定了對象排序(通過Comparable接口),就可以在O(1)
時間中獲取最大值,並在O(log n)
時間中刪除O(log n)
n
邊。
我如何獲取和刪除列表的最大值。
peek和pop是隊列對象實現的相應方法
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.