MapからListへの変換
結論から記載すると、
MapからListへ変換したい場合は、以下のいずれかの方法で変換できます。
Map<String, String> map = new HashMap<String, String>(); List<String> valuesList = new ArrayList<String>(map.values()); List<String> keyList = new ArrayList<String>(map.keySet());
詳細
上記のソースコードのように、Mapインターフェイスのvalues()または、keySet()を使用してListに変換します。また、Javadocを確認すると、それぞれのメソッドの説明は以下のように記載されています。
・keySet():マップに含まれるキーの Set ビューを返します。
そのため、Mapの
・キーをリストに変換する場合は、values()
・値をリストに変換する場合、keySet()
を利用します。
public static void main(String[] args) { Map<String, String> map = new HashMap<String, String>(); map.put("key1", "value1"); map.put("key2", "value2"); // Mapの値をリストに変換 List<String> valuesList = new ArrayList<String>(map.values()); // Mapのキーをリストに変換 List<String> keyList = new ArrayList<String>(map.keySet()); // ソート Collections.sort(valuesList); Collections.sort(keyList); // 出力 for (String val : valuesList) { System.out.println(val); } for (String val : keyList) { System.out.println(val); } }
上記のサンプルコードを実行した結果は、以下のように出力されます。
value2
key1
key2
なお、Collections.sortによりソートを行っていない場合は、以下の結果になりますので、ソートにつては、必要に応じて行ってください。
value1
key2
key1
ListからMapへの変換
ListからMapへ変換する際は、Mapのキーの付与が必要となりますので、MapからListへの変換のように1行で変換することができません。
そのため、変換には、以下のようにMapのキーを設定し、詰め替える処理が必要です。
※自力での変換が必要です
[サンプルコード] ListToMap.javapublic static void main(String[] args) { // Mapのvalueとなるbeanを生成 Bean bean1 = new Bean(); bean1.setCode("001"); bean1.setName("Name001"); Bean bean2 = new Bean(); bean2.setCode("002"); bean2.setName("Name002"); List<Bean> lst = new ArrayList<Bean>(); lst.add(bean1); lst.add(bean2); lst.add(null); // ListからMapへ変換 Map<String, Bean> mp = new HashMap<String, Bean>(); for (Bean bean : lst) { if (bean != null) { if (mp.containsKey(bean.getCode())) { // キー未登録時 mp.put(bean.getCode(), bean); } else { // キー重複時 System.out.println(bean.getCode()); } } } // Map登録情報の出力 for (String key : mp.keySet()) { System.out.println(mp.get(key)); } }
Bean.java
public class Bean { private String code = ""; private String name = ""; public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; }
また、上記のサンプルコードを実行した結果は、以下のように出力されます。
002
ソートについては、上記と同様、必要に応じて行ってください。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント