我List<Map<String, Object >>
喜欢:
[
{"code":last_name},
{"code":last_date},
{"code":task_id}
]
现在,我想像这样在List中进行转换:
[last_name, last_date, task_id]
我用这段代码来转换
List<Object> allCodeKeeper = new ArrayList<Object>();
for(Map<String,Object> map : list){
if(!allCodeKeeper.contains(map.get("code"))){
allCodeKeeper.add(map.get("code"));
}
}
输出:
[last_name, last_date, task_id]
但我想使用Lambda表达式进行此转换。
试试这个 :
List<Object> allCodeKeeper = list.stream().map(o -> o.get("code"))
.distinct().collect(Collectors.toList());
样品运行
List<Map<String, Object>> list = new ArrayList<>();
Map<String,Object> map1 = new HashMap<>();
map1.put("code", "last_name");
Map<String,Object> map2 = new HashMap<>();
map2.put("code", "last_date");
map2.put("code","last_name");//adding a duplicate on purpose
Map<String,Object> map3 = new HashMap<>();
map3.put("code", "task_id");
list.add(map1);
list.add(map2);
list.add(map3);
List<Object> allCodeKeeper = list.stream().map(o -> o.get("code"))
.distinct().collect(Collectors.toList());
System.out.println(allCodeKeeper);
也就是说,您最好使用aSet
而不是aList
作为结果,因为您要消除重复的值。:
Set<Object> uniqueCodeKeeper = list.stream().map(o -> o.get("code"))
.collect(Collectors.toSet());
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句