« 『リビルドワールド』の4巻買ったさ! | トップページ | 『濃いめのレモンサワー』を飲んでみた。 »

2021年4月 8日 (木)

『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』を自作して対応する方法も見つけたけど…

そこまでやるのは、チョット違うかな?((笑))

|

« 『リビルドワールド』の4巻買ったさ! | トップページ | 『濃いめのレモンサワー』を飲んでみた。 »

コメント

コメントを書く



(ウェブ上には掲載しません)




« 『リビルドワールド』の4巻買ったさ! | トップページ | 『濃いめのレモンサワー』を飲んでみた。 »