我有一个映射,它包含日期作为键和(另一个字符串作为键和列表作为值的映射)作为值。map
,我想填充另一个将String作为键和double作为值的映射。FlexiServer的内容包括
public class FlexiServer {
private String serverNumber;
private Double quantity;
private Integer level;
private String parentServer;
}
因此,基本上,我想首先迭代外部映射以获得内部映射,然后迭代内部映射以获得FlexiServers列表,并填充新的映射,其中服务器号作为键,数量列表作为值。我如何使用Java8流来实现这一点呢?
我尝试使用for循环,但我希望使用Java流替换它。
if(data.isPresent()) {
for(Map.Entry<LocalDate, Map<String, List<FlexiServer>>> entry : data.get().entrySet()) {
for(Map.Entry<String, List<FlexiServer>> innerEntry : entry.getValue().entrySet()) {
for(FlexiServer dto : innerEntry.getValue()) {
dailyRequirements.computeIfAbsent(dto.getserverNumber(),
k -> new ArrayList<>()).add(dto.getQuantity());
}
}
}
}
只需从外部映射和内部映射中获取值,然后使用Collectors.GroupingBy
Map<String, List<Double>> result = map.values()
.stream()
.map(Map::values)
.flatMap(Collection::stream)
.flatMap(List::stream)
.collect(Collectors.groupingBy(FlexiServer::getServerNumber, Collectors.mapping(FlexiServer::getQuantity, Collectors.toList())));
如何过滤<代码>地图 仅当列表中的任何员工具有字段值性别=“M”时,我才必须过滤。 输入:
我尝试了这种方法,但得到了强制转换异常,不能将字符串转换为整数。
我想过滤map列表的元素,然后在Java8+中返回map 在getEmployeeByDepartment方法中,对于映射中的每个条目,使用下面的filterEmployee方法在映射值的列表中筛选employee,返回的map1将包含映射,以便 <“tech”,list2.add(emp6)>//emp6的filterEmployee返回true 我在下面试过这个和那个,但没有成功
我在迭代一个对象内的列表时遇到了一个问题,该对象内嵌在另一个映射中。我的目标是迭代这个列表并生成一个映射 ,我希望使用streams和lamdas来实现这一点。 我在上面看到了,我需要通过迭代FolderBo中的elementList从elementBo创建一个带有map 的映射。folderBo本身就在Modelbo的地图内。
我想得到以下数据结构:Map 给定的是一个包含字段als原语(位置、目标、距离)或作为键(位置)加映射(目标)的类。从每个独特的位置,一个人可以瞄准多个目的地(按距离)。 关于第二个代码段:结果应该与第一个代码中的结果相同。唯一的区别是,LocationPair中提供的数据已被进一步处理,因此目的地和距离已被放入其目标地图中。 我知道这一定是可能的,但不知何故,我无法弄清楚如何完成它。上面的流代码
我想迭代一个对象列表。每个对象都包含一些对象的变量。更具体地说: 我的名单是: 所需的映射结构是: