Java 8 groupingBy获取LinkedHashMap并将map的值映射到不同的对象
Java 8 groupingBy to obtain LinkedHashMap and mapping the values of the map to a different object
我有这个方法,它 return 是一个地图:
public Map<String, List<ResourceManagementDTO>> getAccountsByGroupNameMap(final List<AccountManagement> accountManagementList) {
return new LinkedHashMap<>(accountManagementList.stream().collect(Collectors.groupingBy(acc -> acc.getGroup().getName(),
Collectors.mapping(ResourceManagementDTOMapper::toResourceManagementDTO, Collectors.toList()))));
}
我需要我的地图是 LinkedHaspMap,但上面的代码似乎不起作用,因为键的顺序没有保留。我设法找到另一种 return LinkedHashMap 的方法,但是使用该语法我无法再进行映射操作(将 AccountManagement 映射到 ResourceManagementDTO)。这是代码:
public Map<String, List<AccountManagement>> getAccountsByGroupNameMap(final List<AccountManagement> accountManagementList) {
return accountManagementList.stream()
.collect(groupingBy(acc -> acc.getGroup().getName(), LinkedHashMap::new, Collectors.toList()));
}
有没有办法在单个 Java 8 管道中获取 LinkedHashMap 并执行映射操作?我真的想不出结合这两种操作的语法。
尝试以下操作:groupingBy 采用地图类型的供应商。
public Map<String, List<ResourceManagementDTO>>
getAccountsByGroupNameMap(
final List<AccountManagement> accountManagementList) {
return accountManagementList.stream()
.collect(Collectors.groupingBy(
acc -> acc.getGroup().getName(),
LinkedHashMap::new,
Collectors.mapping(
ResourceManagementDTOMapper::toResourceManagementDTO,
Collectors.toList())));
我有这个方法,它 return 是一个地图:
public Map<String, List<ResourceManagementDTO>> getAccountsByGroupNameMap(final List<AccountManagement> accountManagementList) {
return new LinkedHashMap<>(accountManagementList.stream().collect(Collectors.groupingBy(acc -> acc.getGroup().getName(),
Collectors.mapping(ResourceManagementDTOMapper::toResourceManagementDTO, Collectors.toList()))));
}
我需要我的地图是 LinkedHaspMap,但上面的代码似乎不起作用,因为键的顺序没有保留。我设法找到另一种 return LinkedHashMap 的方法,但是使用该语法我无法再进行映射操作(将 AccountManagement 映射到 ResourceManagementDTO)。这是代码:
public Map<String, List<AccountManagement>> getAccountsByGroupNameMap(final List<AccountManagement> accountManagementList) {
return accountManagementList.stream()
.collect(groupingBy(acc -> acc.getGroup().getName(), LinkedHashMap::new, Collectors.toList()));
}
有没有办法在单个 Java 8 管道中获取 LinkedHashMap 并执行映射操作?我真的想不出结合这两种操作的语法。
尝试以下操作:groupingBy 采用地图类型的供应商。
public Map<String, List<ResourceManagementDTO>>
getAccountsByGroupNameMap(
final List<AccountManagement> accountManagementList) {
return accountManagementList.stream()
.collect(Collectors.groupingBy(
acc -> acc.getGroup().getName(),
LinkedHashMap::new,
Collectors.mapping(
ResourceManagementDTOMapper::toResourceManagementDTO,
Collectors.toList())));