10

このための近いリストを保存する必要があります。マップを定義しました-

Map<Node, Boolean> closeList = new HashMap<Node, Boolean>()

今、私が使用するこのマップにノードが存在するかどうかを確認するために-

boolean binExists = closeList .containsKey(node)

value-boolean地図 の は 不要 のようです .

HashMap モード (O(1)) を使用したこのチェックについて、より良いアイデアはありますか?

4

2 に答える 2

18

HashSetはまさにあなたが必要としているもののようです。

Set<Node> closeSet = new HashSet<>();
Node n1 = new Node();
Node n2 = new Node();
closeSet.add(n1);
System.out.println(closeSet.contains(n1)); //true
System.out.println(closeSet.contains(n2)); //false - though depending upon equals/hashcode implementation of Node

を使用するよりも を使用する方Set<Node>が見栄えはしますが、実装の内部でを使用しています。より少ないメモリを使用する実装が必要な場合は、たとえば、この実装を見ることができます。Map<Node, Boolean>java.util.HashSetHashMap

于 2012-11-25T07:33:37.937 に答える
0

ArrayListを使用すると、O(1) で以下を取得できます。

  • サイズ
  • が空です
  • 得る
  • 設定
  • イテレータ
  • リスト反復子

HashSetを使用すると、O(1) で以下を取得できます。

  • 追加
  • 削除する
  • 含む
  • サイズ
于 2012-11-25T08:01:30.523 に答える