1. for-each ループを使用してマップを走査する
for (Map.Entry<KeyType, ValueType> entry : map.entrySet()) {
KeyType key = entry.getKey();
ValueType value = entry.getValue();
// 使用key和value进行操作
}
2. ラムダ式を使用してマップを走査する
map.forEach((key, value) -> {
// 使用key和value进行操作
});
3. イテレータを使用してマップを走査する
Iterator<Map.Entry<KeyType, ValueType>> iterator = map.entrySet().iterator();
while (iterator.hasNext()) {
Map.Entry<KeyType, ValueType> entry = iterator.next();
KeyType key = entry.getKey();
ValueType value = entry.getValue();
// 使用key和value进行操作
}
4. ストリーム API を使用してマップを横断する
map.entrySet().stream().forEach(entry -> {
KeyType key = entry.getKey();
ValueType value = entry.getValue();
// 使用key和value进行操作
});
5. ストリーム API とメソッド参照を使用してマップを走査する
map.forEach((key, value) -> {
// 使用key和value进行操作
});
上記は Java で Map を走査する一般的な方法ですが、特定の使用シナリオに応じて適切な方法を選択してください。
長所と短所 – レビュー
1. for-each ループを使用してマップを走査する
アドバンテージ:
- コードはシンプルで理解しやすく、追加のクラスやインターフェイスのサポートは必要ありません。
- トラバーサル プロセス中に、マップ内のキーと値のペアを直接取得できるため、操作に便利です。
欠点:
- トラバーサル プロセス中に Map を変更する必要がある場合は、Iterator メソッドを使用して操作する必要があります。そうしないと、ConcurrentModificationException 例外がスローされます。
2. ラムダ式を使用してマップを横断する
アドバンテージ:
- コードは簡潔で読みやすいです。
- トラバーサル プロセス中に、マップ内のキーと値のペアを直接取得できるため、操作に便利です。
欠点:
- マップを変更する必要があるシナリオには適していません。
イテレータを使用してマップを走査する
アドバンテージ:
- マップは走査プロセス中に変更できます。
- マップ上で追加、削除、変更操作を実行する必要があるシナリオに適しています。
欠点:
- コードは比較的複雑で、Iterator オブジェクトとループの反復を手動で作成する必要があります。
ストリーム API を使用したトラバース マップ
アドバンテージ:
- コードは簡潔で読みやすいです。
- Stream API によって提供される操作を使用して、マップ内のデータに対するフィルター、並べ替え、グループ化、およびその他の操作を行うことができます。
欠点:
- 走査プロセス中にマップを変更する必要があるシナリオでは、より複雑なコレクタ インターフェイスを使用して実装する必要があります。
Stream API とメソッド参照を使用したトラバース マップ
アドバンテージ:
- コードは簡潔で読みやすいです。
- Map の値が処理されるシナリオに適しています。
欠点:
- これは、マップ内の値を処理するシナリオにのみ適用され、キーと値のペアの処理はサポートされません。