从Java中的ArrayList打印此HashCode

时间:2015-12-22 10:16:46

标签: java

确定现有用户列表是否在添加的用户列表中存在相同的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 ?
    }

3 个答案:

答案 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;
    }

}