真髄!JavaでMapコレクションを巡る5つの方法

4982 ワード

海に帆をあげる
https://zhangxy.blog.csdn.net...
JavaではすべてのmapがMapインタフェースを実現しているので、すべてのMapは以下のように遍歴することができます.この記事では、JavaでMapの集合を巡る5つの方法について紹介します.サンプルコードで詳しく紹介しています.皆さんの学習や仕事に参考になる学習価値があるので、必要な方は一緒に勉強しましょう.
方式は1はMap.keySetを通じてiteratorを使って遍歴します
@Test
public void testHashMap1() {
    Map map = new HashMap<>();
    map.put(001, "Java");
    map.put(002, "   ");
    map.put(003, "Vue");
    System.out.println(map);

    
    Iterator iterator = map.keySet().iterator();
    while (iterator.hasNext()) {
        Integer key = iterator.next();
        String value = map.get(key);
        System.out.println("key = " + key + ", value = " + value);
    }
}

結果:
{1=Java, 2=   , 3=Vue}
key = 1, value = Java
key = 2, value =    
key = 3, value = Vue

方式2はMap.entrySetを通じてiteratorを使って遍歴する
@Test
public void testHashMap2() {
    Map map = new HashMap<>();
    map.put(001, "Java");
    map.put(002, "   ");
    map.put(003, "Vue");
    System.out.println(map);

    
    Iterator> entries = map.entrySet().iterator();
    while (entries.hasNext()) {
        Map.Entry entry = entries.next();
        System.out.println(entry);
    }
}

結果:
{1=Java, 2=   , 3=Vue}
1=Java
2=   
3=Vue

方式3はMap.keySetで遍歴する
@Test
public void testHashMap3() {
    Map map = new HashMap<>();
    map.put(001, "Java");
    map.put(002, "   ");
    map.put(003, "Vue");
    System.out.println(map);

    
    for (Integer key : map.keySet()) {
        System.out.println("key = " + key + ", value = " + map.get(key));
    }
}

結果:
{1=Java, 2=   , 3=Vue}
key = 1, value = Java
key = 2, value =    
key = 3, value = Vue

方式四For-EAch反復entriesによりMap.entrySetを用いて遍歴する
@Test
public void testHashMap4() {
    Map map = new HashMap<>();
    map.put(001, "Java");
    map.put(002, "   ");
    map.put(003, "Vue");
    System.out.println(map);

    
    for (Map.Entry entry : map.entrySet()) {
        System.out.println("key = " + entry.getKey() + ", value = " + entry.getValue());
    }
}
{1=Java, 2=   , 3=Vue}
key = 1, value = Java
key = 2, value =    
key = 3, value = Vue

方式5 lambda式forEachを用いて遍歴する
@Test
public void testHashMap5() {
    Map map = new HashMap<>();
    map.put(001, "Java");
    map.put(002, "   ");
    map.put(003, "Vue");
    System.out.println(map);

    
    map.forEach((k, v) -> System.out.println("key = " + k + ", value = " + v));
}

forEachソース
default void forEach(BiConsumer super K, ? super V> action) {
        Objects.requireNonNull(action);
        for (Map.Entry entry : entrySet()) {
            K k;
            V v;
            try {
                k = entry.getKey();
                v = entry.getValue();
            } catch(IllegalStateException ise) {
                
                throw new ConcurrentModificationException(ise);
            }
            action.accept(k, v);
        }
    }

ソースコードから,この新しい特性は従来の反復方式にシェルを加えたが,コードをより簡単にしたことがわかる.( )
まとめ entrySet Map KV(記事の4番目の方法)は、keySet方式ではなく遍歴する.
keySetは実は2回遍歴し、1回目はIteratorオブジェクトに、2回目はhashMapからkeyに対応するvalue値を取り出す.entrySetは一度だけ遍歴しただけで、keyとvalueをentryに入れ、効率が高くなりました.
values()はV値集合を返し、list集合オブジェクトである.keySet()はK値集合を返し、Set集合オブジェクトである.entrySet()は、K-V値の組合せ集合を返します. JDK8, Map.forEach (記事の5番目の方法).
レベルが限られているため、本ブログには不足が避けられません.皆さん、教えてください.
おすすめ読書
IDEA 2020.2.3解読、IDEA 2020.2起動解読、IDEA起動コード
素晴らしいですね。このJavaサイトには、どんなプロジェクトもあります。https://markerhub.com
このB駅のUP主、javaっていいですね!
B局15万再生量、SpringBoot+Vue前後端分離完全入門チュートリアル!
素晴らしい!最新版Javaプログラミング思想はオンラインで見ることができます!
2021年最新の質問企業面接問題大全及び回答