網路上找到的sample 似乎都是找HashMap<key,val>的code
但如果我的HashMap又是包在一個ArrayList中,要如何取得指定key的val物件呢?
如果採用傳統寫法,就會像是這樣:
for(HashMap<String,Object> data:list){
if(data.containsKey("K1")){
return data.get("K1"));
}
}
list.stream()
.flatMap(each -> each.entrySet().stream())
.filter(each -> each.getKey().contains("K1"))
.map(each -> each.getValue())
.findFirst();
list.stream()
.flatMap(each -> each.entrySet().stream())
eclipse 提示 compile error
Cannot infer type argument(s) for flatMap(Function<? super T,? extends Stream<? extends R>>)
PS:若要用 eclipse 可以看看是否為這問題
https://bugs.eclipse.org/bugs/show_bug.cgi?id=508834
看來好像真是eclipse....
Java 如何使用lambda取得ArrayList<HashMap<K, V>>指定key的val
ArrayList<HashMap<Integer, String>> mapList = new ArrayList<>();
//...
List<String> values = mapList.stream() // 取出每個Map
.map(e -> e.get(key)) // 找到符合key的val
.collect(Collectors.toList()); // 把val蒐集起來