【Java】java.util 集合框架(Map)

【地图】保持键和值的映射关系

在处理关联数组时,有一个称为 Map 的集合可以使用。

地图是什么?

地图由两个元素组成,分别是“键”和“值”。

Map 的特点是在「键」与「值」之间形成一对对的关系,其中键的作用类似于给值命名。每个值都有一个对应的键存在,这就是「键」和「值」成对出现的方式。

键是唯一的,但是值可以有多个相同的。

Map类的特点

地图是基于Map接口实现的,常用的有HashMap、TreeMap、LinkedHashMap这三种。

Mapクラス概要HashMapハッシュを使ったMapのデフォルト。 要素数によらない高速な検索ができます。
順序が保持されていないので目的の要素のキーを指定してそれに紐づく値を取得するのが早いTreeMap順序がキーの順番になっている。キーが数値の場合は小さい順に要素が保持されます。
キーが文字列の場合は、文字コードの順(辞書順、アルファベット順)に要素が保持される。LinkedHashMapキーの挿入順を保持する。 コンストラクタの引数の指定によって、
挿入順ではなくアクセス順を保持することもできます。デフォルトは挿入順です。
要素を追加(put)した順番に、そのままの順番で要素が保持されます。
または、コンストラクタの引数に順序付けモードを指定して、アクセス順(getした順番)に保持されるようにすることもできます。

地图的定义方式

可以使用与ArrayList等类似的语法进行Map的初始化操作,也可以使用钻石操作符进行描述。

这是基本定义的方式。

マップインターフェース名<型> インスタンス名 = new コンストラクタ名<型>();

哈希地图的定义

// HashMap(Mapの代わりに左辺を同じHashMapにしても可)
Map<String, Integer> hashMap = new HashMap<String, Integer>();

树图的定义

// TreeMap(Mapの代わりに左辺を同じTreeMapにしても可)
Map<String, Integer> treeMap = new TreeMap<String, Integer>();

LinkedHashMap的定义

// LinkedHashMap(Mapの代わりに左辺を同じLinkedHashMapにしても可)
Map<String, Integer> treeMap = new LinkedHashMap<String, Integer>();

使用地图的例子

请先查看这段代码,详细的说明已经在注释中描述了,下面我会给出更详细的解释。

package about_map;

// Mapのインポート
import java.util.HashMap;
import java.util.Map;

public class MainAboutMap {

    public static void main(String[] args) {

        // ここから =====================================
      // 1 newの時にキーと値の両方を型として指定
        Map<String, String> sampleHashMap = new HashMap<String, String>(); 
        // 2「put」を使用して値を追加する
        sampleHashMap.put("ニビジム", "タケシ"); 
        sampleHashMap.put("ハナダジム", "カスミ");
        sampleHashMap.put("クチバジム", "マチス");
        // ここまで =====================================

        // 3 「get」でキー値を指定して出力
        System.out.println(sampleHashMap.get("ニビジム"));
        System.out.println(sampleHashMap.get("ハナダジム"));
        System.out.println(sampleHashMap.get("クチバジム"));
        System.out.println(sampleHashMap.get("タマムシジム")); //null になる
    }
}

输出结果

タケシ
カスミ
マチス
null

说解説

這段程式碼的步驟是…

    1. 导入地图

 

    1. 在new的时候同时指定键和值的类型

 

    1. 使用”put”添加值

 

    使用”get”指定键值并输出

描述如下。

在定义”new”时同时指定键和值作为类型。

将生成的HashMap类的实例存储在一个Map[接口]类型的变量sampleHashMap中。

      // 1 newの時にキーと値の両方を型として指定
        Map<String, String> sampleHashMap = new HashMap<String, String>();

使用”put”来添加值

在Map(映射)的接口中,不是通过“add”方法添加值,而是通过名为“put”的方法来添加元素。

在put方法中需要指定两个参数。第一个参数是键,第二个参数是与键相关联的值。

        // 2「put」を使用して値を追加する
        sampleHashMap.put("ニビジム", "タケシ"); 
        sampleHashMap.put("ハナダジム", "カスミ");
        sampleHashMap.put("クチバジム", "マチス");

使用「get」函数通过键值指定输出

在提取值时,请使用get方法。

使用Map.get方法,可以从已经放入键值对的Map中取出与键对应的值。如果键没有被放入,将返回null。

        // 3 「get」でキー値を指定して出力
        System.out.println(sampleHashMap.get("ニビジム"));
        System.out.println(sampleHashMap.get("ハナダジム"));
        System.out.println(sampleHashMap.get("クチバジム"));
        System.out.println(sampleHashMap.get("タマムシジム")); //null になる

给出 の 的其他模式【补充】。

在进行put操作时,也可以通过这种方法来添加值。
请将注释部分与上述代码部分进行交换并使用。
虽然做的事情和上述代码相同,但输出结果也是相同的。

        // ここから =====================================
        // 1 newの時にキーと値の両方を型として指定
        Map<String, String> sampleHashMap = new HashMap<String, String>();
        // 2「put」を使用して値を追加する
        sampleHashMap = new HashMap<String, String>() {
            {
                put("ニビジム", "タケシ");
                put("ハナダジム", "カスミ");
                put("クチバジム", "マチス");
            }
        };
        // ここまで =====================================

引用文献和文章

    • Progate

 

    • ドットインストール

 

    • フレームワーク (framework)

【Java入門】ArrayListの使い方!配列との違いも解説

广告
将在 10 秒后关闭
bannerAds