两个集合list<map<string, object>与list,如何使用stream流过滤前者,找出前者的key与后者值相同的value
试试这个
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Map<String, Object>> list1 = new ArrayList<>();
List<String> list2 = new ArrayList<>();
Map<String, Object> map1 = new HashMap<>();
map1.put("key1", "value1");
map1.put("key2", "value2");
map1.put("key3", "value3");
list1.add(map1);
Map<String, Object> map2 = new HashMap<>();
map2.put("key4", "value4");
map2.put("key5", "value5");
map2.put("key6", "value6");
list1.add(map2);
list2.add("value2");
list2.add("value5");
List<Object> result = list1.stream()
.flatMap(map -> map.entrySet().stream())
.filter(entry -> list2.contains(entry.getValue()))
.map(Map.Entry::getValue)
.collect(Collectors.toList());
System.out.println(result);
}
}
int count = freeChannels.stream().mapToInt(m -> Integer.valueOf(m.get(“count”).toString())).sum();
计算map 中count 的和
根据参考资料和问题要求,我会给出一个具体的解决方案。
首先,我们需要对list>和list进行过滤,找出key与list中元素相同的value。可以按照如下步骤操作:
List<Map<String, Object>> mapList = JSON.parseObject(JSON.toJSONString(listMap), new TypeReference<List<Map<String, Object>>>(){});
List<Object> filteredValues = mapList.stream()
.filter(map -> list.contains(map.get("key")))
.map(map -> map.get("value"))
.collect(Collectors.toList());
需要注意的是,上述代码中的"key"和"value"需要替换为实际的key和value字段名称。
希望我的回答对你有帮助。如果还有其他问题,请随时提问。