MENU

【Java】HashMapの使い方と注意点

f:id:kiserukun:20210611090227p:plain  
HashMapを使ったので記録として残しておきます。

Mapについて

mapは[キー]と[値]をペアとして格納するデータ構造になっています

putを使って値を格納、getを使って値を所得する

import java.util.HashMap;
import java.util.Map;
 
public class Main {
 
 Map<String, String> map = new HashMap<>();
 
    public static void main(String[] args) {
        Main main = new Main();
        main.exec();
    }
    
     public void exec(){   
        map.put("key1", "広島");
        map.put("key2", "山口");
        map.put("key3", "岡山");
        
        System.out.println(map.get("key1"));
        System.out.println(map.get("key2"));
        System.out.println(map.get("key3"));
    }
}
>広島
>山口
>岡山

データを格納するときは[キー]と[値]をセットで記述します。 データを取り出すときは[キー]を指定することで値を取り出します。

1つずつ値を取り出す

1つずつ取り出すにはfor文を使います

import java.util.HashMap;
import java.util.Map;
 
public class Main {
 
 Map<String, String> map = new HashMap<>();
 
    public static void main(String[] args) {
        Main main = new Main();
        main.exec();
    }
      public void exec(){
        map.put("key1", "広島");
        map.put("key2", "山口");
        map.put("key3", "岡山");
        
        for (String key : map.keySet()) {
          String value = map.get(key);
          System.out.println(key + ":" + value);
        }
    }
}
>key1:広島
>key2:山口
>key3:岡山

注意点

HashMap (Java SE 11 & JDK 11 )

このクラスはマップの順序を保証しません。特に、その順序を常に一定に保つことを保証しません。

公式に載っているように順番が一定ではないようです。

私が確認したところ格納量が5つ以上になると並び順がバラバラになって取り出されました。

import java.util.HashMap;
import java.util.Map;
 
public class Main {
 
 Map<String, String> map = new HashMap<>();
 
    public static void main(String[] args) {
        Main main = new Main();
        main.exec();
    }
      public void exec(){
        map.put("key1", "広島");
        map.put("key2", "山口");
        map.put("key3", "岡山");
        map.put("key4", "広島");
        map.put("key5", "山口");
        map.put("key6", "岡山");
        
        for (String key : map.keySet()) {
          String value = map.get(key);
          System.out.println(key + ":" + value);
        }
    }
}
>key1:広島
>key2:山口
>key5:山口
>key6:岡山
>key3:岡山
>key4:広島

少しだけバラバラに取り出されています

データが多くなるともっとデータがごちゃごちゃになって返ってきそうなので 使い方には注意したいと思います。

あとがき

今はArrayList,HashMapしか使ったことがないので
TreeSetやTreeMapなど勉強していきたいと思います。