『java』の『HashMap』の中身を『List』化したい…
『java』の『HashMap』は、とても便利だ。
重複しているデータから重複を消してまとめてくれる。
で、色々処理に使っていているが…
処理した、『HashMap』を『List』化したいなと思った…。
で、多分『List』化するとしたら…
こんな感じかも。
[test.java]-----------------------------
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
class test {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("3", "test3");
map.put("1", "test1");
map.put("2", "test2");
map.put("4", "test4");
map.put("5", "test5");
System.out.println(map);
List<String> list = new ArrayList<String>();
for(String v : map.values()) {
list.add(v);
}
for(int i=0 ; i<list.size() ; i++) {
System.out.println(i + " : " + list.get(i));
}
}
}
[test.java]-----------------------------
実行結果
{1=test1, 2=test2, 3=test3, 4=test4, 5=test5}
0 : test1
1 : test2
2 : test3
3 : test4
4 : test5
でも、『key』も欲しいな…。
となると、こうなるかな?
[test.java]-----------------------------
import java.util.HashMap;
import java.util.ArrayList;
import java.util.List;
class test {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("3", "test3");
map.put("1", "test1");
map.put("2", "test2");
map.put("4", "test4");
map.put("5", "test5");
System.out.println(map);
List<String> k_list = new ArrayList<String>();
List<String> v_list = new ArrayList<String>();
for(String k : map.keySet()) {
k_list.add(k);
v_list.add(map.get(k));
}
for(int i=0 ; i<k_list.size() ; i++) {
String k = k_list.get(i);
String v = v_list.get(i);
System.out.println(i + " : " + k + " => " + v);
}
}
}
[test.java]-----------------------------
実行結果
{1=test1, 2=test2, 3=test3, 4=test4, 5=test5}
0 : 1 => test1
1 : 2 => test2
2 : 3 => test3
3 : 4 => test4
4 : 5 => test5
でも、もっと直接的に参照できないだろうか?
で、調べたら…
面倒だけどあったので、メモです。
[test.java]-----------------------------
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.ArrayList;
import java.util.List;
class test {
public static void main(String[] args) {
HashMap<String, String> map = new HashMap<String, String>();
map.put("3", "test3");
map.put("1", "test1");
map.put("2", "test2");
map.put("4", "test4");
map.put("5", "test5");
System.out.println(map);
List<Entry<String, String>> list = new ArrayList<Entry<String, String>>(map.entrySet());
for(int i=0 ; i<list.size() ; i++) {
Entry<String, String> entry = list.get(i);
String k = entry.getKey();
String v = entry.getValue();
System.out.println(i + " : " + k + " => " + v);
}
}
}
[test.java]-----------------------------
実行結果
{1=test1, 2=test2, 3=test3, 4=test4, 5=test5}
0 : 1 => test1
1 : 2 => test2
2 : 3 => test3
3 : 4 => test4
4 : 5 => test5
この肝は、『Map.Entry』だろう。
実は、『Map』を書略していたが…
import java.util.Map;
をすると、こう書ける。
Map<String, String> map = new HashMap<String, String>();
多分主流なんだろうな。
兎も角、目的は、達成したので満足♪
因みに『new Entry<String, String>()』は、使えない…。
したらエラーが発生する。
>エラー: Entryはabstractです。インスタンスを生成することはできません
『abstract(抽象)』って何じゃそりゃ!
まあ、『Entry』を自作して対応する方法も見つけたけど…
そこまでやるのは、チョット違うかな?((笑))
最近のコメント