JAVA中User类创建两个对象内容判断是否相等
时间: 2024-06-06 10:08:57 浏览: 76
在Java中,如果两个对象使用equals方法比较返回true,则认为这两个对象是相等的。User类如果没有重写equals方法,则比较的是两个对象在内存中的地址是否相等。所以,如果创建两个User对象,即使它们的属性值都相同,只要它们在内存中的地址不同,equals方法会返回false。如果想要比较两个User对象的属性值是否相等,需要重写equals方法。
相关问题
java中,如何判断List<User>中的是否包含User,User类有两个属性:userName,userPassword,给一个代码
示例:
可以通过调用List的contains方法来判断List中是否包含某个对象。针对User对象,可以自己实现一个equals方法来比较对象中的属性是否相同。
示例代码如下:
```
public class User {
private String userName;
private String userPassword;
public User(String name, String password) {
userName = name;
userPassword = password;
}
// 重写equals方法,使其比较两个对象中的属性是否相同
@Override
public boolean equals(Object obj) {
if (obj == null || !(obj instanceof User)) {
return false;
}
User u = (User) obj;
return this.userName.equals(u.userName) && this.userPassword.equals(u.userPassword);
}
}
// 在List中查找是否包含某个User对象
List<User> users = new ArrayList<>();
users.add(new User("Alice", "123"));
users.add(new User("Bob", "456"));
User targetUser = new User("Alice", "123");
if (users.contains(targetUser)) {
System.out.println("List中包含目标User对象");
} else {
System.out.println("List中不包含目标User对象");
}
```
创建一个User类,包含name和password两个成员变量。向一个HashSet对象中加入两个完全一样的User对象,然后遍历HashSet对象中的User对象,并把这些User对象的成员变量打印在控制台。
下面是一个示例代码:
```java
import java.util.HashSet;
public class User {
private String name;
private String password;
public User(String name, String password) {
this.name = name;
this.password = password;
}
public String getName() {
return name;
}
public String getPassword() {
return password;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
if (!name.equals(user.name)) return false;
return password.equals(user.password);
}
@Override
public int hashCode() {
int result = name.hashCode();
result = 31 * result + password.hashCode();
return result;
}
public static void main(String[] args) {
HashSet<User> users = new HashSet<>();
users.add(new User("Alice", "123456"));
users.add(new User("Alice", "123456"));
for (User user : users) {
System.out.println("Name: " + user.getName() + ", Password: " + user.getPassword());
}
}
}
```
在这个示例代码中,我们创建了一个User类,用于表示用户。这个类包含name和password两个成员变量,以及相应的getter方法。
在equals方法中,我们重写了Object类的equals方法,以便HashSet对象能够正确判断两个User对象是否相等。在hashCode方法中,我们根据name和password生成了一个唯一的哈希值。
在main方法中,我们创建了一个HashSet<User>对象,并向其中添加了两个完全一样的User对象。然后我们遍历这个HashSet对象,打印出其中所有User对象的成员变量。由于我们重写了equals和hashCode方法,所以这两个完全一样的User对象只会被加入HashSet中一次,遍历时也只会输出一次。
阅读全文