【Java】HashMapの使い方と注意点
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など勉強していきたいと思います。