如何过滤<代码>地图
仅当列表中的任何员工具有字段值性别=“M”时,我才必须过滤。
输入:
地图
输出:
地图
筛选条件:
< code>Employee.genter = "M"
如果过滤结果为空,我还必须返回空地图。
我尝试了下面的,但它不像预期的那样工作。只有当所有雇员的性别都是“M”时,它才返回。
tempCollection.entrySet().stream()
.filter(i -> i.getValue().entrySet().stream().allMatch(e-> "M".equals(e.getValue().getGender())))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
似乎你想要的是一个条目
在这种情况下,您可以
过滤
以及anyMatch
作为第一个条件。此外,在收集阶段,您可以在内部映射上应用过滤:
tempCollection.entrySet().stream()
.filter(i -> i.getValue().values().stream().anyMatch(e -> "M".equals(e.getGender())))
.collect(toMap(Map.Entry::getKey,
v -> v.getValue().entrySet().stream()
.filter(i -> "M".equals(i.getValue().getGender()))
.collect(toMap(Map.Entry::getKey, Map.Entry::getValue))));
函数 allMatch
仅在流中的每个元素都与谓词匹配时才匹配;如果任何元素与谓词匹配,则可以使用 anyMatch
进行匹配:
tempCollection.entrySet().stream()
.filter(i -> i.getValue().entrySet().stream().anyMatch(e-> "M".equals(e.getValue().getGender())))
.collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue));
您可以简单地迭代键值对并过滤为:
Map<String, Map<String, Employee>> output = new HashMap<>();
tempCollection.forEach((k, v) -> {
if (v.values().stream().anyMatch(i -> "M".equals(i.getGender()))) {
output.put(k, v.entrySet()
.stream()
.filter(i -> "M".equals(i.getValue().getGender()))
.collect(toMap(Map.Entry::getKey, Map.Entry::getValue)));
}
});
我想过滤map列表的元素,然后在Java8+中返回map 在getEmployeeByDepartment方法中,对于映射中的每个条目,使用下面的filterEmployee方法在映射值的列表中筛选employee,返回的map1将包含映射,以便 <“tech”,list2.add(emp6)>//emp6的filterEmployee返回true 我在下面试过这个和那个,但没有成功
我有一个映射,它包含日期作为键和(另一个字符串作为键和列表作为值的映射)作为值。,我想填充另一个将String作为键和double作为值的映射。FlexiServer的内容包括 因此,基本上,我想首先迭代外部映射以获得内部映射,然后迭代内部映射以获得FlexiServers列表,并填充新的映射,其中服务器号作为键,数量列表作为值。我如何使用Java8流来实现这一点呢? 我尝试使用for循环,但我希
我有以下情况:有一个对象列表-ProductData,其中包含几个字段: 还有一个API,它返回以下对象的列表: 但它会返回带有空“计划名称”字段的对象,因为在提取该对象时不允许这样做。我需要通过外部参照将产品数据与RatingTableRow链接,以便将计划名称设置到RatingTableRow中,因为我以后需要使用此对象,所以我创建了以下代码来实现这一点: 我知道java文档说,不适合这些需求
本文向大家介绍java8快速实现List转map 、分组、过滤等操作,包括了java8快速实现List转map 、分组、过滤等操作的使用技巧和注意事项,需要的朋友参考一下 利用java8新特性,可以用简洁高效的代码来实现一些数据处理。 定义1个Apple对象: 添加一些测试数据: 1、分组 List里面的对象元素,以某个属性来分组,例如,以id分组,将id相同的放在一起: 2、List转Map i
我不断遇到需要通过映射或集合保存状态的解决方案。e、 g.创建一个返回在输入中找到的重复项的方法 我的Java8流解决方案,不幸的是,我正在使用哈希集进行过滤。我理解这并不“恰当”,因为这取决于州。没有州是建议还是硬性规定?这只是运行并行流时的问题吗?有人能推荐一种不使用哈希集的方法吗?
我想得到以下数据结构:Map 给定的是一个包含字段als原语(位置、目标、距离)或作为键(位置)加映射(目标)的类。从每个独特的位置,一个人可以瞄准多个目的地(按距离)。 关于第二个代码段:结果应该与第一个代码中的结果相同。唯一的区别是,LocationPair中提供的数据已被进一步处理,因此目的地和距离已被放入其目标地图中。 我知道这一定是可能的,但不知何故,我无法弄清楚如何完成它。上面的流代码