Mun*_*rza 2 java list hashmap java-stream
我正在迭代Hashmap列表,使用以下代码查找所需的HashMap对象.
public static Map<String, String> extractMap(List<Map<String, String>> mapList, String currentIp) {
for (Map<String, String> asd : mapList) {
if (asd.get("ip").equals(currentIp)) {
return asd;
}
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
我在考虑使用Java 8流.这是我用来显示所需对象的代码.
public static void displayRequiredMapFromList(List<Map<String, String>> mapList, String currentIp) {
mapList.stream().filter(e -> e.get("ip").equals(currentIp)).forEach(System.out::println);
}
Run Code Online (Sandbox Code Playgroud)
我无法使用以下代码从流中获取所需的Map
public static Map<String, String> extractMapByStream(List<Map<String, String>> mapList, String currentIp) {
return mapList.stream().filter(e -> e.get("ip").equals(currentIp))
.collect(Collectors.toMap(p -> p.getKey(), p -> p.getValue()));
}
Run Code Online (Sandbox Code Playgroud)
这会导致语法错误类型不匹配:无法从Map转换为Map.我有什么需要放在这里获取地图?
你什么都不想要.collect.您想要找到与谓词匹配的第一个地图.
所以你应该使用.findFirst()而不是.collect().
toMap()用于Map从流中的元素构建a .
但是你不想这样做,每个元素都已经是一个Map.