gpt4 book ai didi

java - 从 List> 到 List 的转换(从 map 列表中获取所有唯一值)

转载 作者:塔克拉玛干 更新时间:2023-11-01 23:06:28 26 4
gpt4 key购买 nike

我有 List<Map<String, Object >>喜欢:

[
{"code":last_name},
{"code":last_date},
{"code":task_id}
]

现在我想像这样在列表中转换它:

 [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);

也就是说,您最好使用 Set 而不是使用 List 作为结果,因为您要消除重复值。 :

Set<Object> uniqueCodeKeeper = list.stream().map(o -> o.get("code"))
.collect(Collectors.toSet());

关于java - 从 List<Map<K,V>> 到 List<V> 的转换(从 map 列表中获取所有唯一值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39178596/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com