5

ボードで可能な状態を調べて HashMap に保存するメソッドがあります

void up(String str){
  int a = str.indexOf("0");
  if(a>2){
   String s = str.substring(0,a-3)+"0"+str.substring(a-2,a)+str.charAt(a-3)+str.substring(a+1);
   add(s,map.get(str)+1);
   if(s.equals("123456780")) {
    System.out.println("The solution is on the level  "+map.get(s)+" of the tree");

        //If I get here, I need to know the keys on the map
       // How can I store them and Iterate through them using 
      // map.keySet()?

   }
  }

}

キーのグループに興味があります。それらをすべて印刷するにはどうすればよいですか?

HashSet t = map.keySet()コンパイラによって拒否されているだけでなく、

LinkedHashSet t = map.keySet()
4

9 に答える 9

5

使用する:

Set<MyGenericType> keySet = map.keySet();

これらのメソッドによって返されるコレクションのインターフェイス タイプを常に指定するようにしてください。このように、これらのメソッドによって返される Set の実際の実装クラス (あなたの場合は map.keySet()) に関係なく、問題ありません。このようにして、次のリリースで jdk 担当者が返された Set に別の実装を使用しても、コードは引き続き機能します。

map.keySet() は、マップのキーのビューを返します。このビューに変更を加えると、基礎となるマップが変更されますが、それらの変更は制限されます。Map の javadoc を参照してください。

http://java.sun.com/j2se/1.5.0/docs/api/java/util/Map.html#keySet%28%29

于 2009-12-11T01:48:58.470 に答える
5
Map<String, String> someStrings = new HashMap<String, String>();
for(Map.Entry<String, String> entry : someStrings.entrySet()) {
    String key = entry.getKey();
    String value = entry.getValue();
}

これは、私がマップを繰り返し処理するのが好きな方法です。特に keySet() だけが必要な場合は、その答えがこのページの他の場所にあります。

于 2009-12-11T03:06:34.817 に答える
4
for ( String key : map.keySet() ) { 
 System.out.println( key );
}
于 2009-12-11T02:27:01.700 に答える
0

から保証されるのkeySet()は、インターフェイスを実装するものだけですSet。そして、それは のような文書化されていないクラスである可能性があるSecretHashSetKeys$fooため、インターフェイスにプログラムするだけSetです。

のビューを取得しようとしてこれに遭遇しましたTreeSet。戻り値の型は最終的TreeSet$3に綿密に調査されました。

于 2009-12-11T02:29:19.883 に答える
0

古いJDKを使用していない限り、コレクションクラスを使用するときにジェネリックを使用する方が少しきれいだと思います。

だから〜だ

Set<MyType> s = map.keySet();

そして、それらを繰り返すだけなら、好きな種類のループを使用できます。ただし、このキーセットに基づいてマップを変更する場合は、キーセットの反復子を使用する必要があります。

于 2009-12-11T02:08:23.763 に答える
0

セット t = map.ketSet()

API は、返される Set のタイプを指定しません。

特定の実装ではなく、変数をインターフェイスとして宣言するようにしてください。

于 2009-12-11T01:39:41.140 に答える
0

ただ

Set t = map.keySet();
于 2009-12-11T01:39:51.620 に答える
0
    Map<String, Object> map = new HashMap<>();
    map.put("name","jaemin");
    map.put("gender", "male");
    map.put("age", 30);
    Set<String> set = map.keySet();
    System.out.println("this is map : " + map);
    System.out.println("this is set : " + set);

マップのキー値をセットに入れます。

于 2017-11-23T04:00:21.103 に答える