【Java】java.util 集合框架(Map)
【地图】保持键和值的映射关系
在处理关联数组时,有一个称为 Map 的集合可以使用。
地图是什么?
地图由两个元素组成,分别是“键”和“值”。
Map 的特点是在「键」与「值」之间形成一对对的关系,其中键的作用类似于给值命名。每个值都有一个对应的键存在,这就是「键」和「值」成对出现的方式。
键是唯一的,但是值可以有多个相同的。
Map类的特点
地图是基于Map接口实现的,常用的有HashMap、TreeMap、LinkedHashMap这三种。
Mapクラス概要HashMapハッシュを使ったMapのデフォルト。 要素数によらない高速な検索ができます。
順序が保持されていないので目的の要素のキーを指定してそれに紐づく値を取得するのが早いTreeMap順序がキーの順番になっている。キーが数値の場合は小さい順に要素が保持されます。
キーが文字列の場合は、文字コードの順(辞書順、アルファベット順)に要素が保持される。LinkedHashMapキーの挿入順を保持する。 コンストラクタの引数の指定によって、
挿入順ではなくアクセス順を保持することもできます。デフォルトは挿入順です。
要素を追加(put)した順番に、そのままの順番で要素が保持されます。
または、コンストラクタの引数に順序付けモードを指定して、アクセス順(getした順番)に保持されるようにすることもできます。
順序が保持されていないので目的の要素のキーを指定してそれに紐づく値を取得するのが早い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
说解説
這段程式碼的步驟是…
-
- 导入地图
-
- 在new的时候同时指定键和值的类型
-
- 使用”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の使い方!配列との違いも解説