1、list与set的区别
set中不包含重复的元素(hashCode不能相同)
list中可包含重复的元素
2、具体操作
插入set,并输出:
public static void main( String[] args ) {
Set<User> userSet = new HashSet<>();
User user1 = new User(1, "张三");
User user2 = new User(1, "李四");
userSet.add(user1);
userSet.add(user2);
for (User user : userSet) {
System.out.println(user);
}
}
对User对象重写equals,hashCode方法,唯一标识为id
public class User {
private Integer id;
private String name;
public User( Integer id, String name ) {
this.id = id;
this.name = name;
}
/**
* 如果对象类型是User,先比较hashcode,一致的场合再比较每个属性的值
*/
@Override
public boolean equals( Object obj ) {
if (obj == null) {
return false;
}
if (this == obj) {
return true;
}
if (obj instanceof User ) {
User user= (User) obj;
// 比较每个属性的值一致时才返回true
if (user.id.equals(this.id)) {
return true;
}
}
return false;
}
/**
* 重写hashcode方法,返回的hashCode一样才再去比较每个属性的值
*/
@Override
public int hashCode() {
return id.hashCode();
}
/**
* 为了方便查看,重写toString方法
*/
@Override
public String toString() {
return "User{" +
"id=" + id +
", name='" + name + '\'' +
'}';
}
}
结果为: