網頁

2019/12/14

Java 如何使用lambda取得ArrayList<HashMap<K, V>>指定key的val

IT邦幫忙看到的問題,JAVA如何使用lambda取得ArrayList<HashMap<key,val>>指定key的val。

HashMap<Integer, String> map1 = new HashMap<>();
map1.put(1, "a");
HashMap<Integer, String> map2 = new HashMap<>();
map2.put(1, "b");
HashMap<Integer, String> map3 = new HashMap<>();
map3.put(1, "c");

ArrayList<HashMap<Integer, String>> mapList = new ArrayList<>();
mapList.add(map1);
mapList.add(map2);
mapList.add(map3);

Integer key = 1;

// lambda 取得指定key的value
List<String> values = mapList.stream() // 取出每個Map
        .map(e -> e.get(key)) // 找到符合key的val
        .collect(Collectors.toList()); // 把val蒐集起來

System.out.println(values); // [a, b, c]

每次看到直接使用Class型態的集合例如ArrayList<HashMap<K, V>>都會想這大概是博弈業的程式:p。


參考:

沒有留言:

張貼留言