だから、私はいくつかのJavaをコーディングしています。HashMap を検索して結果をループしたい場合、これが私のハッシュマップです。
public HashMap<String, String> messages;
しかし!私はすべてのキーをループしたくありません。MySQL データベースを検索するようなものです。
申し訳ありませんが、私の英語、私はノルウェー人です。
私が正しく理解していれば、HashMap のキーを反復処理したいと考えています。これを行うには、Map.keySet()メソッドを使用する必要があります。これにより、マップのすべてのキーを含むSetが返されます。または、 entrySetまたはvaluesを反復処理することもできます。(詳細については、提供されているすべてのリンクを参照してください。)
また、 Collections のチュートリアル トレイルを確認することを強くお勧めします。また、 Java API のドキュメントもよく理解しておく必要があります。特に、 HashMapおよびMapのドキュメントを参照する必要があります。
equals
hashcode
クラスに適切に実装し、メソッドBlock
を呼び出すと、検索が実行されます。get(Object key)
Hashmap
まだ非常に不明確ですが、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 );
}
すべてのキーにアクセスして値を取得する場合。
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();
}