私のプログラムでは、私はエッジのコレクションを持っています、彼らは体重で注文する必要があります。要素を取り除くためのベストコレクション
プログラムのどこかでコレクションを処理する必要があり、コレクションの最大部分を削除する必要があるたびに、
私は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をテストしましたが、エッジが同じ重みを持つことができるので、重複した値を受け入れる完璧なソートされたコレクションは何ですか? (時間を
は、私はすでにのArrayListを使用している...彼らは重量で注文する必要があり、私はエッジのコレクションを持っている私のプログラムでは、あなたに
のそれぞれの方法です、それがソートされている場合は、ちょうど最後の項目を削除するか、少なくとも後方端から –
たぶん、優先順位キューまたは最大ヒープを繰り返しますか?迅速に削除することができますと並べ替えられている –
@ cricket_007ありがとう、私はpriorityQueueを使用します。 –