使用java流迭代2个列表时修改对象 List list1=new ArrayList(); List list2=新的ArrayList(); list1.stream().forEach(l1->list2.stream()) .forEach(l2->{ 如果(l1.getOrderId()==l2.getOrderId()) l1.setStatus(l2.getStatus()); }));

使用java流迭代2个列表时修改对象 List list1=new ArrayList(); List list2=新的ArrayList(); list1.stream().forEach(l1->list2.stream()) .forEach(l2->{ 如果(l1.getOrderId()==l2.getOrderId()) l1.setStatus(l2.getStatus()); }));,java,java-stream,Java,Java Stream,我是这样做的。它工作得很好,但现在我遇到了另一种情况,如果orderId不在列表2中,则将该特定l1的状态设置为“无效”。 OrderId在两个表中都是唯一的。 希望这能让您更好地理解。编辑谢谢您对问题的编辑,现在它更有意义了。我认为这应该符合你的要求: list1.forEach(acc -> acc.setStatus(list2.stream() .filter(o -> o.getOrderId() == acc.getOrderId())

我是这样做的。它工作得很好,但现在我遇到了另一种情况,如果orderId不在列表2中,则将该特定l1的状态设置为“无效”。 OrderId在两个表中都是唯一的。
希望这能让您更好地理解。

编辑谢谢您对问题的编辑,现在它更有意义了。我认为这应该符合你的要求:

    list1.forEach(acc -> acc.setStatus(list2.stream()
            .filter(o -> o.getOrderId() == acc.getOrderId())
            .findAny()
            .map(Order::getStatus)
            .orElse("invalid")));

我使用
Iterable.forEach()
,然后使用
Collection.stream()
Optional.map()
作为计算要设置的状态的函数方法。

在使用流时修改对象,通常不是一个好主意。“我想使用流来编写代码”为什么?@Andy我想要函数式编程。酷伙计。谢谢