确定现有用户列表是否在添加的用户列表中存在相同的ID。如果有,该用户将从现有用户列表中删除。
问题是:如果我这样做,我会打印HashCode
,如果我只是(i)
我打印了索引。如何Array.toString(i)
这个?总是存在错误。
for (int i = 0; i < users.size(); i++) {
for (int u = 0; u < usersToAdd.size(); u++) {
if (((User) users.get(i)).Id == ((User) usersToAdd.get(u)).Id)
users.remove(u);
}
}
users.addAll(usersToAdd);
for (int i = 0; i < users.size(); i++) {
System.out.println(users.get(i)); // how to print them ?
}
答案 0 :(得分:1)
您通常应该覆盖toString()
类的User
方法,然后打印这样的用户:
class User {
private String name;
public String toString() {
return "User: " + name;
}
}
List<User> users = new ArrayList<>();
...
for (User user : users) {
System.out.println(user);
}
如果你真的需要收集对象(我不建议这样做):
for (Object user : users) {
System.out.println(user);
}
UPD:没有toString()方法你可以:
for (User user : users) {
System.out.println("User: " + user.getName() + user.getId());
}
答案 1 :(得分:0)
您应该覆盖toString()
方法:
public class User {
public int Id;
public String ime;
public User(int id, String ime) {
this.Id = id;
this.ime = ime;
}
public String toString() {
return "Id: " + Id + ", ime: " + ime;
}
}
并使用id
代替Id
。
答案 2 :(得分:0)
User
类应该覆盖toString
方法,因为它的默认实现是哈希码:
public class User {
public int Id;
public String ime;
public User(int id, String ime) {
this.Id = id; this.ime = ime;
}
@Override
public String toString() {
return "Id: " + Id + ", Ime: " + ime;
}
}