gpt4 book ai didi

java - 使用 Java 8 流将 2 个不同对象的列表连接到第三个对象的列表

转载 作者:行者123 更新时间:2023-12-03 01:55:28 25 4
gpt4 key购买 nike

我遇到了一个我无法解决的问题......

我有 3 种类型的对象

  1. MyObject1 - 包含字段 id 和名称
  2. MyObject2 - 包含字段 id 和错误
  3. MyJoinObject - 包含字段 ID、名称和错误

我有 2 个列表:

  1. MyObject1 列表
  2. MyObject2 列表

我想创建 MyJoinObject 的第三个列表,它是两个列表的联接。将会有 MyJoinObject 对象作为 MyObject1 对象,但它们也将包含错误(如果存在)(通过 id 连接)。我想使用 Java 8 流来做到这一点。

最佳答案

你可以做这样的事情:

List<MyJoinObject> result = 
list1.stream().map( o1 -> {
Optional<MyObject2> error = list2.steam()
.filter( o2 -> o2.getId() == o1.getId() )
.findAny();
if ( error.isPresent() )
return new MyJoinObject( o1.getId(), o1.getName(), error.get().getError() );

return new MyJoinObject( o1.getId(), o1.getName() );

} ).collect( Collectors.toList() );

在执行此操作之前,您还可以构造一个由 id 映射的错误的 hasmap:

final Map<Integer, MyObject2> errorsById = 
list2.stream( )
.collect( Collectors.toMap( MyObject2::getId, Function.identity( ) ) );

如果您这样做,您可以通过调用方法 containsKey( )get( ) 来使用此映射来检索错误

关于java - 使用 Java 8 流将 2 个不同对象的列表连接到第三个对象的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36614951/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com