ずっとMap、というと。。
Map map = new HashMap()<>;
しか知らなかった。
が、LinkedHashMapなるものが存在する!
ということで、その使い方をば。
#LinkedHashMapとは
挿入した順番を保持する最高なMapです。
使う場面としては、
・挿入した順序で並べたい
・人間ならわかるが、コンピュータはわからない順序で並べる
の場面を紹介します。
#サンプルの内容
行きたい都道府県を複数選んで表示するサンプルです。
よく
「北は北海道、南は沖縄まで」
と言いますが、基本的には北→南で並びますよね。。。
一覧として
・北海道
・宮城県
・東京都
・大阪府
・愛知県
・福岡県
を設定します。
挿入する順番は上記のように北から順に挿入します。
HashMapの場合
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
//押下した都道府県が入るList
List<String> prefectureClickedList = new ArrayList();
//都道府県の一覧Map
Map<String, Boolean> prefectureMap = new HashMap();
// Map<String, Boolean> prefectureMap = new LinkedHashMap();
{
//北から挿入する
prefectureMap.put("北海道", false);
prefectureMap.put("宮城県", false);
prefectureMap.put("東京都", false);
prefectureMap.put("大阪府", false);
prefectureMap.put("愛知県", false);
prefectureMap.put("福岡県", false);
}
//押下処理(順序はバラバラで)
prefectureMap.put("福岡県", true);
prefectureMap.put("大阪府", true);
prefectureMap.put("東京都", true);
prefectureMap.put("北海道", true);
//prefectureClickedListに追加
for(String prefecture: prefectureMap.keySet()) {
Boolean bool = prefectureMap.get(prefecture);
if(bool){
prefectureClickedList.add(prefecture);
}
}
//出力するString
String outPrefecture = new String();
//中点"・"を入れる"
for(String clickedPref : prefectureClickedList) {
outPrefecture = outPrefecture + clickedPref + "・";
}
outPrefecture = outPrefecture.substring(0, outPrefecture.length() -1);
System.out.println("行きたい県:" + outPrefecture);
}
}
出力結果
行きたい県:北海道・大阪府・東京都・福岡県
うーん、大阪と東京の順序を入れ替えたい!!ムズムズするww
LinkedHashMapの場合
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
//押下した都道府県が入るList
List<String> prefectureClickedList = new ArrayList();
//都道府県の一覧Map
// Map<String, Boolean> prefectureMap = new HashMap();
Map<String, Boolean> prefectureMap = new LinkedHashMap();
{
//北から挿入する
prefectureMap.put("北海道", false);
prefectureMap.put("宮城県", false);
prefectureMap.put("東京都", false);
prefectureMap.put("大阪府", false);
prefectureMap.put("愛知県", false);
prefectureMap.put("福岡県", false);
}
//押下処理(順序はバラバラで)
prefectureMap.put("東京都", true);
prefectureMap.put("福岡県", true);
prefectureMap.put("大阪府", true);
prefectureMap.put("北海道", true);
//prefectureClickedListに追加
for(String prefecture: prefectureMap.keySet()) {
Boolean bool = prefectureMap.get(prefecture);
if(bool){
prefectureClickedList.add(prefecture);
}
}
//出力するString
String outPrefecture = new String();
//中点"・"を入れる"
for(String clickedPref : prefectureClickedList) {
outPrefecture = outPrefecture + clickedPref + "・";
}
outPrefecture = outPrefecture.substring(0, outPrefecture.length() -1);
System.out.println("行きたい県:" + outPrefecture);
}
}
出力結果
行きたい県:北海道・東京都・大阪府・福岡県
うん。何も違和感がなくなりました。
最&高!
まとめ
・都道府県の順序 :北から南
・洗濯の順序 :洗う、すすぎ、脱水
・四季 :春、夏、秋、冬
・シャアの乗ったMS:ザク、ズゴック、(リックドム)、ゲルググ、ジオング。。
これらはパッと見、人間が見れば当たり前のことです。
北海道の緯度経度と福岡の緯度経度を調べて、より北から順に並べる。。
ってやればできますが、
あらかじめ決められた順序で入れることで対応できました。
#さいごに