LoginSignup
2
0

More than 3 years have passed since last update.

[Java]HashMap,TreeMap,LinkedHashMapのセットした値の保持順

Last updated at Posted at 2020-10-18

[Java]HashMap,TreeMap,LinkedHashMapのセットした値の保持順

Mapにはいくつか種類があるけど、格納した値がどの順番で保持されるか(どの順番で出力されるか)違いがある。よく見る(個人的に)Mapたちのそれをまとめた。
どのMapを使うかはこの特徴の違いで選ぶことが多い気がする。

HashMap TreeMap LinkedHashMap
順序不定 keyの昇順 登録順

以下、確認してみた。

test.java
public static void main(String[] args) {
    final int key = 0;
    final int value = 1;
    HashMap<String,String> hashMap = new HashMap<String,String>();
    TreeMap<String,String> treeMap = new TreeMap<String,String>();
    LinkedHashMap<String,String> linkedHashMap = new LinkedHashMap<String,String>();

    String[][] keyValue = {{"Japan","America","China","Korea","India"},
                            {"Tokyo","Washington D.C.","Beijing","Seoul","New Delhi"}};

    for(int i = 0; i < keyValue[key].length; i++) {
        hashMap.put(keyValue[key][i], keyValue[value][i]);
        treeMap.put(keyValue[key][i], keyValue[value][i]);
        linkedHashMap.put(keyValue[key][i], keyValue[value][i]);
    }
    System.out.println("HashMap の結果を出力!");
    for(String hashMapKey : hashMap.keySet()) {
        System.out.println( hashMapKey +" の首都は "+ hashMap.get(hashMapKey) + " です。");
        }
    System.out.println();

    System.out.println("TreeMap の結果を出力!");
    for(String treeMapKey :treeMap.keySet()) {
        System.out.println( treeMapKey +" の首都は "+ treeMap.get(treeMapKey) + " です。");
    }
    System.out.println();

    System.out.println("LinkedHashMap の結果を出力!");
    for(String linkedHashMapKey : linkedHashMap.keySet()) {
        System.out.println( linkedHashMapKey +" の首都は "+ linkedHashMap.get(linkedHashMapKey) + " です。");
    }
}
実行結果
HashMap の結果を出力!
Japan の首都は Tokyo です。
China の首都は Beijing です。
America の首都は Washington D.C. です。
Korea の首都は Seoul です。
India の首都は New Delhi です。

TreeMap の結果を出力!
America の首都は Washington D.C. です。
China の首都は Beijing です。
India の首都は New Delhi です。
Japan の首都は Tokyo です。
Korea の首都は Seoul です。

LinkedHashMap の結果を出力!
Japan の首都は Tokyo です。
America の首都は Washington D.C. です。
China の首都は Beijing です。
Korea の首都は Seoul です。
India の首都は New Delhi です。

よって、HashMapは順序不定、TreeMapはkeyの昇順(今回はアルファベットの昇順)、LinkedHashMapは登録順になっていることを確認した。
まぁでも毎回忘れちゃうんですよね。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0