簡體   English   中英

去除元素的最佳集合

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM