java根据映射对象的值筛选映射对象,而不将结果收集到另一个映射中 2 月,1 周 Questions & Answers 56 正如问题所说。我正试图找到最好的方法来过滤带有流的映射,而不使用迭代器/删除。 我找到的所有代码片段都返回一个新映射。那不是我想要的。我想要的是贴图本身被过滤,这样我就可以使用相同的对象
# 1 楼答案 根据评论,你不能用流来做这件事。您可以做的最接近的事情是这样的(满足“相同映射”要求,但“使用流”失败): yourMap.entrySet().removeIf(k -> someRemovalCheck());
# 2 楼答案 因为您不想创建新的Map,所以我建议在^{}上调用^{} 这将起作用,因为Map#values返回Map值的视图,对该视图所做的任何修改都会反映在Map中 例如,您可以使用: Map<Integer, String> map = new HashMap<>(Map.of(1, "One", 2, "Two", 3, "Three")); System.out.println(map); map.values().removeIf("Three"::equals); System.out.println(map); 输出: [2=Two, 1=One, 3=Three] [1=One, 2=Two]
# 1 楼答案
根据评论,你不能用流来做这件事。您可以做的最接近的事情是这样的(满足“相同映射”要求,但“使用流”失败):
# 2 楼答案
因为您不想创建新的} 上调用^{}
Map
,所以我建议在^{这将起作用,因为
Map#values
返回Map
值的视图,对该视图所做的任何修改都会反映在Map
中例如,您可以使用:
输出: