0

だから、私はいくつかのJavaをコーディングしています。HashMap を検索して結果をループしたい場合、これが私のハッシュマップです。

public HashMap<String, String> messages;

しかし!私はすべてのキーをループしたくありません。MySQL データベースを検索するようなものです。

申し訳ありませんが、私の英語、私はノルウェー人です。

4

4 に答える 4

2

私が正しく理解していれば、HashMap のキーを反復処理したいと考えています。これを行うには、Map.keySet()メソッドを使用する必要があります。これにより、マップのすべてのキーを含むSetが返されます。または、 entrySetまたはvaluesを反復処理することもできます。(詳細については、提供されているすべてのリンクを参照してください。)

また、 Collections のチュートリアル トレイルを確認することを強くお勧めします。また、 Java API のドキュメントもよく理解しておく必要があります。特に、 HashMapおよびMapのドキュメントを参照する必要があります。

于 2012-08-18T19:48:24.033 に答える
0

equals hashcodeクラスに適切に実装し、メソッドBlockを呼び出すと、検索が実行されます。get(Object key)Hashmap

于 2012-08-18T19:45:50.443 に答える
0

まだ非常に不明確ですが、entrySet()とentryKey()の両方を実行する方法を尋ねました。ただし、entrySet()は、1つのデータ構造でKeyとValueの両方を返します。

for( Map.Entry<String,String> entry : messages.entrySet() ) {
    String key = entry.getKey();
    String value = entry.getValue();
    System.out.printf("%s = %s%n", key, value );
}

ただし、通常はこの方法を使用せず、代わりにキーを使用して値を取得するだけで、反復のためのはるかに単純なメソッドが生成されます。

for( String key : messages.keySet() ) {
    String value = messages.get(key);

    System.out.printf("%s = %s%n", key, value );
}

デフォルトのJavaに含まれているツールのみを使用して、MySQLのようにマップを「クエリ」する機能はありません。Apache Collectionのようなライブラリは、クエリサポートを提供できる述語やその他のフィルターを提供します。他のライブラリには、グアバライブラリが含まれます。たとえば、apachecommonsコレクションを使用します。

List<String> keys = new ArrayList<String>(messages.keySet());
CollectionUtils.filter( keys, new Predicate<String>() {
    public boolean evaluate( String key ) {
        if( someQueryLogic ) {
           return true;
        } else {
           return false;
        }
    }
} );

// now iterate over the keys you just filtered

for( String key : keys ) {
    String value = message.get(key);
    System.out.printf("%s = %s%n", key, value );
}
于 2012-08-18T19:58:37.743 に答える
0

すべてのキーにアクセスして値を取得する場合。

public HashMap<String, String> messages;
...
for (final String key : messages.keySet()) {
  final String value = messages.get(key);
  // Use the value and do processing
}

はるかに良いアイデアは、単に使用することmessages.entrySetです...

for (final Map.Entry<String, String> entry : messages.entrySet()) {
  final String key = entry.getKey();
  final String value = entry.getValue();
}
于 2012-08-18T19:53:09.443 に答える