. 创建一个 User 类, 包含 name 和 password 两个成员变量。 向一个 HashSet 对象中加入 两个完全一样的 User 对象, 然后遍历 HashSet 对象中的 User 对象, 并把这些 User 对象的成员 变量打印在控制台。
时间: 2023-06-24 17:06:26 浏览: 65
下面是实现代码:
```java
import java.util.HashSet;
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 class Main {
public static void main(String[] args) {
HashSet<User> users = new HashSet<>();
User user1 = new User("Alice", "123456");
User user2 = new User("Alice", "123456");
users.add(user1);
users.add(user2);
for (User user : users) {
System.out.println("Name: " + user.getName() + ", Password: " + user.getPassword());
}
}
}
```
输出结果为:
```
Name: Alice, Password: 123456
```
可以看到,虽然向 HashSet 中加入了两个完全一样的 User 对象,但是最终只有一个对象被加入,因为 HashSet 会根据对象的 hashCode 和 equals 方法来判断两个对象是否相等。在本例中,我们重写了 User 类的 hashCode 和 equals 方法,使得两个完全一样的 User 对象被认为是相等的,因此只有一个对象被加入了 HashSet 中。
阅读全文