Java 如果对象具有相同的id,则遍历列表并添加属性

Java 如果对象具有相同的id,则遍历列表并添加属性,java,Java,我有一个User类,它有几个属性,包括Id。我想知道的是,如果用户具有相同的Id,那么通过这个列表并将time属性添加到TotalTime中的最佳方法是什么 我尝试了一个双for循环,比较每种对象类型和一个C(语言)双循环来遍历列表并添加。但我认为这在Java中不是正确的方法,我认为可能有一些方法可以使代码更简洁 我有这门课: public class User { private String Date; private String Time; private String Status;

我有一个User类,它有几个属性,包括Id。我想知道的是,如果用户具有相同的Id,那么通过这个列表并将time属性添加到TotalTime中的最佳方法是什么

我尝试了一个双for循环,比较每种对象类型和一个C(语言)双循环来遍历列表并添加。但我认为这在Java中不是正确的方法,我认为可能有一些方法可以使代码更简洁

我有这门课:

public class User {
private String Date;
private String Time;
private String Status;
private String Id;
private String Duration;
private Long Seconds;
private Long Totaltime;
}
我知道我可以使用下面这样的东西来迭代它。 我使用了两个for循环,但我很确定这在Java中不是正确的方法

for (User user : users) {
for (User user : users) {
.....
.....

}
}
似乎不太合适。我想找到一个简单的好方法。请帮忙(我对Java非常陌生)


我想添加用户的一个属性(Totaltime),即具有相同Id的用户在线花费的所有时间的总和(秒属性)。

因此,您可以使用
映射,其中第一个字符串参数是您的Id,第二个参数是您的对象

Map<String, User> users = new HashMap<>();
所以,你可以这样做来找到你的钥匙:

if(users.containsKey(idUser)){
    users.get(idUser).setTotalTime(1000);
}

按照@yahavi的建议,您可以使用:


我会将所有值放在一个哈希映射中:
map
。键(字符串)是id,值(用户)是用户。这里有一个很好的解释:您希望在具有相同id的所有用户中的哪一个中存储总时间?对于具有相同id的所有用户,我希望他们都具有TotalTime属性。@DanielMesejo谢谢大家的帮助。非常感谢。
if(users.containsKey(idUser)){
    users.get(idUser).setTotalTime(1000);
}
ArrayList<User> users = new ArrayList<User>() {{
    add(new User("1", 2L));
    add(new User("2", 2L));
    add(new User("1", 3L));

}};

Map<String, Long> result = users.stream()
                .collect(groupingBy(User::getId, summingLong(User::getTime)));
{1=5, 2=2}