私が鍵となり、距離と値が特定の距離(すなわちキー)にある頂点のリストが含まれているのArrayListであるHashMapを持って優先キューのArrayList HashMapの
私はHashMapののプライオリティキューを作りたい(優先順位に基づきますキーを使用して)一度に特定の距離にあるすべての頂点を取得します。
Queue(無制限)を優先することは可能ですか? 誰でも助けてくれますか?
私が鍵となり、距離と値が特定の距離(すなわちキー)にある頂点のリストが含まれているのArrayListであるHashMapを持って優先キューのArrayList HashMapの
私はHashMapののプライオリティキューを作りたい(優先順位に基づきますキーを使用して)一度に特定の距離にあるすべての頂点を取得します。
Queue(無制限)を優先することは可能ですか? 誰でも助けてくれますか?
クラスを使用すると、距離と頂点をカプセル化できます。 Comparable
インターフェイスを実装するか、new
のPriorityQueue
になるとComparator
オブジェクトを渡します。あなたはこの次...
class Node implements Comparable<Node> {
int distance;
List<Vertex> list;
public Node(int distance, List<Vertex> list) {
this.distance = distance;
this.list = list;
}
@Override
public int compareTo(Node o) {
// your compare logic goes here
return Integer.compare(this.distance, o.distance);
}
}
=====
public static void main(String[] args) {
PriorityQueue<Node> q = new PriorityQueue<>();
}
優先度つきキューは無制限であり、それがキュー内の要素の数に基づいて動的に拡張を行うことができます。これはいつでも内部容量を持ち、要素が追加されると増加します。
しかし、マップをキー(距離)でソートし、距離でソートされたLinkedHashMapを使用したい場合、PriorityQueueに変換するのはあまり意味がありません。
Map<Double, List<Vertex>> map = new LinkedHashMap<>();
//...
map = map.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
こんにちはZildyanありがとう役立つかもしれません。反復最小距離の頂点が選択され、選択された頂点のすべての出て行くエッジは、新しい距離の頂点を見つけるために緩和される。私はこの要件のために計算上高価だと感じているので、これをソートしないようにしたい。 – pkumar
これは私の要件は、のようなダイクストラのある...- https://docs.oracle.com/javase/7/docs/api/java/util/PriorityQueue.html – cjungel