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

将对象列表转换为映射java 8流

向修谨
2023-03-14

我有下面的pojo

Class Employee () {
 Private name;
 Private id;
}

此employee类用于从mybatis orm获取对象列表(list)。

mybatis将输出作为列表返回,因为mybatis不支持将Map作为返回类型

我必须把它转换成地图

我尝试了下面的方法,但没有成功,因为它需要getName()和getId()方法

Map<String, String> map = list.stream().collect(Collectors.toMap(Employee::getId, Employee:getName));

请告知是否有一种方法可以在不修改员工pojo的情况下使用stream实现。

注意:我知道我们可以使用ofr或for each循环来实现。

共有2个答案

姚飞昂
2023-03-14

应该是这样的

Map<Integer, String> result1=list.stream().collect(
                Collectors.toMap(Employee::getId, Employee::getName));
彭存
2023-03-14

你们应该经常发布公式化的问题,但由于你们是新手,我们就忽略这一部分吧。我在这里假设你的名字和ID都是string类型。

下面的代码非常适合您。

Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName));

如果你也想保持秩序,请选择下面提到的。

Map<String, String> map = list.stream().filter(Objects::nonNull).collect(Collectors.toMap(Employee::getId, Employee::getName, (oldValue, newValue) -> oldValue,LinkedHashMap::new));

如果没有,如果您添加您收到的错误消息,那将是非常好的,因此将能够详细帮助您。

 类似资料:
  • 我有一个问题与转换列表对象映射字符串,列表对象。我正在寻找与一个关键名称的汽车所有组件的地图,一个值由汽车与此组件表示 我写了一个解决方案,但寻找一个更好的流解决方案。

  • 我是Mapstruct的新手。我试图将列表转换为地图,我在网上搜索了很多,我有一些解决方案,比如它还没有在mapstruct中实现。如果有人能提供一些替代解决方案,我将很高兴。所有我希望转换映射如下: 现在是否可以使用MapStruct来实现?

  • 问题内容: 我想使用Java 8技巧在一行中执行以下操作。 给定此对象定义: 和a ,我想得到a ,它是第一个列表中所有s对象的列表- 顺序相同。 我可以使用Java中的循环来做到这一点,但我相信Java8中应该有一个单行lambda可以做到这一点。我无法在线找到解决方案。也许我没有使用正确的搜索词。 有人可以为这种转换建议一个lambda或另一种线吗? 问题答案: 这应该可以解决问题: 也就是说

  • 我可以在Java中使用循环来实现这一点,但我认为在Java8中应该有一个一行程序lambda来实现这一点。我无法在网上找到解决方案。也许我没有使用正确的搜索词。 有人能为这个转换提出一个lambda或另一个一行程序吗?

  • 我有一张这样的地图<代码>地图 我使用了对象映射器,但它不工作,因为映射在我的结构中包含另一个映射。

  • 我有映射键作为字符串和值作为列表。列表可以有10个唯一值。我需要转换这个映射键为整数和值为列表。示例如下: 输入: 2:“钥匙-1”,“钥匙-2” 3:“钥匙-1”、“钥匙-2”、“钥匙-3” 4:“钥匙-1”、“钥匙-2”、“钥匙-3”