This question already has answers here:
Java - Merge objects of list given a condition

(2个答案)


去年关闭。




用户详细信息模型:
private String userName;
private int userSalary;

我有一个用户信息的ArrayList
List<UserDetail> userDetails = new ArrayList<>();

UserDetail user1 = new UserDetail("Robert", 100);
UserDetail user2 = new UserDetail("John", 100);
UserDetail user3 = new UserDetail("Robert", 55);

userdetails.add(user1);
userdetails.add(user2);
userdetails.add(user3);

我正在尝试遍历数组,以发现是否有基于userName的重复条目,从上面的列表中,我有两个记录具有相同的用户名"Robert",在这种情况下,我想将userSalary加起来并删除一个从列表中记录。

期望新的ArrayList:
userName userSalary

Robert 155
John 100

这可能吗 ??

最佳答案

 userDetails.stream()
            .collect(Collectors.toMap(
                        UserDetail::getName,
                        Function.identity(),
                        (left, right) -> {
                            left.setSalary(left.getSalary() + right.getSalary());
                            return left;
                        }
                    ))
            .values();

这将给您一个Collection<UserDetail>。显然,您可以根据需要将其复制到ArrayList中。

10-08 11:34
查看更多