当前位置: 首页 > 知识库问答 >
问题:

按流从其他地图收集地图[重复]

齐文栋
2023-03-14

我有这样的代码:

Map<Integer, Settings> operatorsSettings = new HashMap<>();
operators.forEach((operator, codeTypes) -> operatorsSettings.put(operator, mapper.convertValue(codeTypes.get(SETTINGS), Settings.class)));
return operatorsSettings;

我写了它,但我想知道。是否可以在不创建新地图的情况下编写它。类似这样的东西(不正确的代码):

return operators.entrySet().stream()
        .collect(entry -> Collectors.toMap(entry.getKey() , mapper.convertValue(entry.getValue().get(SETTINGS), Settings.class)));

共有2个答案

解鸿运
2023-03-14

是的,您可以在纯java中执行此操作:

return operators.entrySet().stream()
    .collect(Collectors.toMap(entry -> entry.getKey() , entry -> mapper.convertValue(entry.getValue().get(SETTINGS), Settings.class)));

或者您可以使用stream ex库并这样编写:

EntryStream.of(operatorsSettings).mapValues(codeTypes -> mapper.convertValue(codeTypes.get(SETTINGS), Settings.class))...
颜骁
2023-03-14

有可能,你只是犯了一个小的语法错误。。。

return operators.entrySet().stream().collect(Collectors.toMap(entry -> entry.getKey() , mapper.convertValue(entry.getValue().get(SETTINGS), Settings.class)));
 类似资料:
  • 问题内容: 我怎么能展平的(同类型)s到一个用Java 8? 问题答案: 我的语法可能有些偏离,但是flatMap应该为您完成大部分工作:

  • 我试图对对象中的每个条目执行映射操作。 我需要从键中去掉前缀,并将值从一种类型转换为另一种类型。我的代码从 映射实例并使用,这看起来很难看。 还有更好的选择吗?使用for循环似乎更好: 我应该避免使用流API吗?还是我错过了更好的方式?

  • 我对这两种方法的不同感到困惑,但我肯定我做错了什么。 下面我有一个工作示例和一个非工作示例。在工作示例中,我将变量测试器指定为“映射”,在非工作示例中,我尝试将其指定为映射。在第二个示例中,错误如下所示: 我没有看到tester变量的类型与myMap变量的类型之间的联系。 虽然Eran发布了对我的原始版本的解释,但它表明我应该使用收藏家。托马普而不是收藏家。groupBy,因为我的目标是为从“pr

  • 问题内容: 这是我的代码: 服务器启动后,如何动态更改侦听的IP地址,例如改为。有“不听”的方法吗? 问题答案: 您必须使用server.close()而不是app.close()。 应该管用

  • 问题内容: 我有一张地图清单。 列表中的值例如是 最后,我想要一个Map>,就像 如何在Java中实现这一目标。 代码: 现在,基于与我想要的相同ID,此genericList是该列表的输入并来自此列表 基本上,要根据ID将响应归类为String,将具有相同ID的响应分组在列表中,然后创建一个以ID为键并以列表为值的新映射。 问题答案: 您可以使用Java 8进行以下操作: 这将打印: 整数:1