HashMap の 7 つのトラバーサル メソッド
学習ノートは他の人をより良く助けることができます~
オリジナルのHashMap の 7 つのトラバース メソッドとパフォーマンス分析を読むことをお勧めします。「訂正」
注:1)尽量使用 entrySet 来实现 Map 集合的遍历,性能更高
EntrySet を走査するときは、取得した ley と value を直接取得できるエントリ ペアに直接入れます
が、KeySet は走査時に map.get(key) を使用します。これは、Map コレクションを再度走査してキーをクエリするのと同じです。したがって、対応する値の効率は低くなります。
2)Iterator迭代器 和 forEach遍历的效率相差不大
1. 各メソッドの簡潔なコードを以下に示します。
注: 次のエントリはInteger:Stringの形式です。
- イテレータ反復子のトラバーサル - EntrySet
Iterator<Map.Entry<Integer, String>> iterator = map.EntrySet().iterator(); while(iterator.hasNext()){ Map.Entry<Integer, String> entry = ietrator.next(); System.out.println("key--" + enrty.getKey()); System.out.println("value--" + enrty.getValue()); }
- イテレータ イテレータ トラバーサル - KeySet
Iterator<Integer> iterator = map.KeySet().iterator(); while(iterator.hasNext()){ Integer key = iterator.next(); System.out.println("key--" + key); System.out.println("value--" + map.get(key)); }
- 走査ごと - EntrySet
for(Map.Entry<Integer, String> entry : map.EntrySet()){ System.out.println("key--" + entry.getKey()); System.out.println("value--" + entry.getValue()); }
- 各トラバーサル - KeySet
for(Integer key : map.KeySet()){ System.out.println("key--" + key); System.out.println("value--" + map.get(key)); }
- ラムダ式トラバーサル (JDK1.8+)
map.forEach((key, value)->{ System.out.println("key--" + key); System.out.println("value--" + value); });
- ストリーム API トラバーサル (JDK1.8+) - シングルスレッド stream()
map.entrySet().stream().forEach((entry)->{ System.out.println("key--" + entry.getKey()); System.out.println("value--" + entry.getValue()); });
- ストリーム API トラバーサル (JDK1.8+) - マルチスレッドのParallelStream()
map.entrySet().parallelStream().forEach((entry) -> { System.out.println("key--" + entry.getKey()); System.out.println("value--" + entry.getValue()); });