高度な JAVA - マップ シリーズ コレクションのトラバーサル メソッドと共通 API

目次

        1.0 マップコレクションの説明

        1.1 マップ収集の一般的な方法

        1.2 Mapシリーズコレクションの特徴

        2.0 Map シリーズコレクションのトラバーサルメソッド (3 つのメソッド)

         2.1 keySet() メソッドを使用してトラバースする

        2.2entrySet()メソッドを使用してトラバースする

        2.3 forEach() メソッドを使用したトラバース (Java 8+)


        1.0 マップコレクションの説明

        マップ は、キーと値のペア( < a i=4>キーと値のペア)。各キーは一意ですが、値は繰り返すことができます。 Map は、キーに基づいて対応する値をすばやく見つけることができます。 マップでは、キーと値は任意のタイプのオブジェクトにすることができます。簡単に言うと、Map クラス は、キーと値のペア タイプの要素を格納するインターフェイスおよびコンテナです。

        1.1 マップ収集の一般的な方法

コードで導入する マップ 一般的な収集方法:

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapAPI {
    public static void main(String[] args) {
        //由于 Map 是一个接口,不能直接 new 一个 Map 类型的对象,
        //所以需要用到 Map 的实现类 HashMap 来创建对象。

        Map<String,Integer> map = new HashMap<>();//一行经典代码

        //1. put(k,v) :实例方法,添加元素
        map.put("二哈",250);
        map.put("金毛",750);
        map.put("拉布拉多",1250);
        map.put("中华田园犬",1359);
        System.out.println(map);
    //输出结果为:{二哈=250, 金毛=750, 中华田园犬=1359, 拉布拉多=1250}

        //2. size() :实例方法,获取元素大小
        int s = map.size();
        System.out.println(s);
        //输出结果为:4

        //3. isEmpty() :实例方法,判断集合是否为空,为空返回true,反之
        boolean b = map.isEmpty();
        System.out.println(b);
        //输出结果为:false

        //4. get(k) :实例方法,根据键获取对应的值
        int i = map.get("二哈");
        System.out.println(i);
        //输出结果为:250

        //5. remove(k) :实例方法,根据键删除整个元素
        map.remove("二哈");
        System.out.println(map);
        //输出结果为:{金毛=750, 中华田园犬=1359, 拉布拉多=1250}

        //6. containsKey(k) :实例方法,判断是否包含某个键
        boolean bk = map.containsKey("二哈");
        System.out.println(bk);
        //输出结果为:false

        //7. containsValue(k) :实例方法,判断是否包含某个值
        boolean bv = map.containsValue(750);
        System.out.println(bv);
        //输出结果为:true

        //8. keySet() :实例方法,获取全部键的集合,
        // 需要用 Set 系列集合来接受。
        Set<String> stringSet = map.keySet();
        System.out.println(stringSet);
        //输出结果为:[金毛, 中华田园犬, 拉布拉多]

        //9. values() :实例方法,获取全部值
        //需要用 Collection 系列集合来接受
        Collection<Integer> collection = map.values();
        System.out.println(collection);
        //输出结果为:[750, 1359, 1250]

        //10. putAll(Map m) :将 m 中的内容全部倒入到调用该方法的集合中。
        Map<String,Integer> map1 = new HashMap<>();
        map1.put("小黑",19999);
        map1.put("小白",29999);
        map.putAll(map1);
        System.out.println(map);
  //输出结果为:{小白=29999, 金毛=750, 小黑=19999, 中华田园犬=1359, 拉布拉多=1250}

        //11. clear() :实例方法,删除整个集合中的元素
        map.clear();
        System.out.println(map);
        //输出结果为:{}

    }
}

実行結果は次のとおりです。

        1.2 Mapシリーズコレクションの特徴

        順序なし: は、追加された要素に従って出力されず、次のようにランダムに出力されることを意味します。

        繰り返し不可: 指定された「キー」は繰り返し表示できません。後で追加された繰り返し要素は、同じ「キー」を持つ要素を上書きしますが、「値」は上書きされます。は許可されません。リクエストを行うと、次のように繰り返し表示される可能性があります。

        インデックスなし:マップ シリーズ コレクションは固定順序をサポートしていないため、インデックスの存在は当然意味がありません。

        2.0 Map シリーズコレクションのトラバーサルメソッド (3 つのメソッド)

         2.1 keySet() メソッドを使用してトラバースする

        MapkeySet() メソッドを通じてすべてを取得します> キーを取得し、for-each を使用してキーをループし、 get() < a i =8>対応する値を取得するメソッド。

これは特定のコードによって実現されます。

public class MapIteration {
    public static void main(String[] args) {

        Map<String,Integer> map = new HashMap<>();
        map.put("二哈",250);
        map.put("金毛",1250);
        map.put("拉布拉多",2250);
        map.put("中华田园犬",3250);

        //先取出该集合的全部”键“
        Set<String> stringSet = map.keySet();
        //然后用增强 for 方法根据”键“通过 get(k) 来查询”值“
        for (String k:stringSet) {
            int v = map.get(k);
            System.out.println(k+"=="+v);
        }
    }
}

操作結果:

        ステップ: まずコレクションのすべての「キー」を削除し、使用して for メソッドを強化します「キー」に従って「値」をクエリするget(k) メソッドを渡します。

        2.2entrySet()メソッドを使用してトラバースする

        マップ entrySet() をすべて取得するメソッドEntry キーと値のペアのオブジェクトを作成し、for-each TraverseEntry オブジェクトをループします。簡単に言うと、コレクション全体のキーと値のペアを考慮し、拡張されたfor ループを使用してコレクションを走査します。 passfor a> メソッドはキーと値を取得します。 getValue() および getKey()

これは特定のコードによって実現されます。

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class MapIteration {

    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<>();
        map.put("二哈",250);
        map.put("金毛",1250);
        map.put("拉布拉多",2250);
        map.put("中华田园犬",3250);

        //通过调用 map 的实例方法 entrySet(),键值对包装成一个整体,
        //Map.Entry<String,Integer>这代码可以理解为是一个类型,用 Set 系列集合来存储
        Set<Map.Entry<String,Integer>> entrySet = map.entrySet();
        for (Map.Entry<String,Integer> entry:entrySet) {
            String k = entry.getKey();
            int v = entry.getValue();
            System.out.println(k+"=="+v);
        }
    }
}

実行結果は次のとおりです。

        2.3 forEach() メソッドを使用したトラバース (Java 8+)

        Map forEach() メソッドを渡します。 pass BiConsumer 関数インターフェイスを入力して、キーと値のペアを走査します。 BiConsumer インターフェイスの accept() メソッドは、キーと値という 2 つのパラメータを受け取ります。

        ここで forEach()マップ インスタンスメソッド。

これは特定のコードによって実現されます。

import java.util.Map;
import java.util.HashMap;

public class MapIteration {
    public static void main(String[] args) {
        Map<String, Integer> map = new HashMap<>();
        map.put("二哈", 250);
        map.put("金毛", 1250);
        map.put("拉布拉多", 2250);
        map.put("中华田园犬", 3250);
/*        map.forEach(new BiConsumer<String, Integer>() {
            @Override
            public void accept(String k, Integer v) {
                System.out.println(k+"=="+v);
            }
        });*/
        
        //进一步简化为:
        map.forEach((k, v) -> System.out.println(k + "==" + v));
    }
}

実行結果は次のとおりです。

        さらに、実際には、このメソッドは本質的に 2 番目のメソッドをパッケージ化したものです。重要なのは、entrySet() メソッドを使用してトラバースすることです。ソース コードは次のとおりです。

        3 番目の方法は、Map シリーズ コレクションの走査を実装するのが非常に簡単で、必要なのは 1 行だけであることがわかります。覚えやすいコードです:

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

         この記事を最初に紹介します。詳細については、次のリンクをクリックしてください:  Xiaopu_-CSDN ブログ 



おすすめ

転載: blog.csdn.net/Tingfeng__/article/details/133993687