. 创建一个 User 类, 包含 name 和 password 两个成员变量。 向一个 HashSet 对象中加入 两个完全一样的 User 对象, 然后遍历 HashSet 对象中的 User 对象, 并把这些 User 对象的成员 变量打印在控制台。
时间: 2023-08-31 21:39:15 浏览: 161
Java中如何比较两个数组中元素是否相同
### 回答1:
下面是实现代码:
```java
import java.util.HashSet;
class User {
String name;
String password;
public User(String name, String password) {
this.name = name;
this.password = password;
}
@Override
public int hashCode() {
return name.hashCode() ^ password.hashCode();
}
@Override
public boolean equals(Object obj) {
if (!(obj instanceof User))
return false;
User user = (User) obj;
return this.name.equals(user.name) && this.password.equals(user.password);
}
@Override
public String toString() {
return "User{name='" + name + "', password='" + password + "'}";
}
}
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(user.toString());
}
}
}
```
运行结果如下:
```
User{name='Alice', password='123456'}
```
可以看到,HashSet 只存储了一个 User 对象,因为 user1 和 user2 完全一样,它们的哈希值和 equals 方法的实现都相同。遍历 HashSet 时只会输出一个 User 对象。
### 回答2:
首先,我们需要创建一个名为User的类,该类具有两个成员变量name和password:
```java
public class User {
private String name;
private String password;
public User(String name, String password) {
this.name = name;
this.password = password;
}
//Getter和Setter方法
//...
}
```
接下来,我们创建一个HashSet对象并向其中添加两个完全相同的User对象:
```java
import java.util.HashSet;
public class Main {
public static void main(String[] args) {
HashSet<User> userSet = new HashSet<>();
User user1 = new User("用户名1", "密码1");
User user2 = new User("用户名1", "密码1");
userSet.add(user1);
userSet.add(user2);
}
}
```
注意,在HashSet中添加两个完全相同的对象只会保留一个。
最后,我们遍历HashSet对象中的User对象并打印它们的成员变量值:
```java
for (User user : userSet) {
System.out.println("用户名:" + user.getName() + ",密码:" + user.getPassword());
}
```
完整代码如下:
```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;
}
public static void main(String[] args) {
HashSet<User> userSet = new HashSet<>();
User user1 = new User("用户名1", "密码1");
User user2 = new User("用户名1", "密码1");
userSet.add(user1);
userSet.add(user2);
for (User user : userSet) {
System.out.println("用户名:" + user.getName() + ",密码:" + user.getPassword());
}
}
}
```
运行上述代码,控制台将输出:
```
用户名:用户名1,密码:密码1
```
### 回答3:
可以通过以下方式创建一个User类,并添加到HashSet对象中:
```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 obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
User user = (User) obj;
return name.equals(user.name) && password.equals(user.password);
}
@Override
public int hashCode() {
return name.hashCode() + password.hashCode();
}
}
public class Main {
public static void main(String[] args) {
HashSet<User> userSet = new HashSet<>();
User user1 = new User("Alice", "123456");
User user2 = new User("Alice", "123456");
userSet.add(user1);
userSet.add(user2);
for (User user : userSet) {
System.out.println("用户名:" + user.getName() + ",密码:" + user.getPassword());
}
}
}
```
运行以上代码,会输出以下结果:
```
用户名:Alice,密码:123456
```
由于HashSet对对象进行去重是依赖对象的`equals()`和`hashCode()`方法,所以需要在User类中重写这两个方法,确保只有成员变量完全一样的对象才被认为是相同的对象。
阅读全文