gpt4 book ai didi

java - 使用流过滤 List>

转载 作者:行者123 更新时间:2023-12-02 01:20:45 26 4
gpt4 key购买 nike

我需要过滤列表List<Map<String, String> > 使用流按值(如果 map 已搜索到值,则 map 添加到列表)。我正在尝试这样做:

static Map<String, String> map1 = new HashMap<>();
static Map<String, String> map2 = new HashMap<>();
static Map<String, String> map3 = new HashMap<>();

static {
map1.put("key", "value");
map1.put("key2", "value2");

map2.put("key3", "value3");
map2.put("key2", "value2");

map3.put("key3", "value3");
map3.put("key4", "value4");
}

public static void main(String[] args) {
List<Map<String, String>> list = new ArrayList<>();
Map<String, String> resultMap = new HashMap<>();

list.add(map1);
list.add(map2);
list.add(map3);

List<Map<String, String>> result = list.stream()
.flatMap(map -> map.entrySet().stream())
.filter(value -> value.getValue().equals("value2"))
.map(x -> resultMap.put(x.getKey(), x.getValue()))
.collect(Collectors.toList());

}

执行此代码时出现错误:java:不兼容的类型:推理变量 T 具有不兼容的边界 等式约束:java.util.Map 下限:java.lang.String

最佳答案

如果您希望输入 List 中包含“value2”值的所有 Map 都出现在输出 List 中,则需要:

List<Map<String, String>> result = 
list.stream()
.filter(map -> map.entrySet().stream().anyMatch (e->e.getValue().equals("value2")))
.collect(Collectors.toList());

或者(正如厄立特里亚评论的那样):

List<Map<String, String>> result = 
list.stream()
.filter(map -> map.containsValue("value2"))
.collect(Collectors.toList());

关于java - 使用流过滤 List<Map<String, String>>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57754906/

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