面试的时候碰到这样一个问题,不太明白User u1 = new User();
u1.name="aa";
u1.password = "11";
User u2 = new User();
u2.name = "bb";
u2.password = "22";
Set sets = new HashSet();
sets.add(u1);
sets.add(u2);是类似这样的去重复吗?
u1.name="aa";
u1.password = "11";
User u2 = new User();
u2.name = "bb";
u2.password = "22";
Set sets = new HashSet();
sets.add(u1);
sets.add(u2);是类似这样的去重复吗?
解决方案 »
- eclipse找不到AnnotationProcessor是怎么回事?
- 关于 httpUrlConnection 的 setDoOutput 与 setDoInput
- 如何用JAVA实现条码转换并打印?
- 很小很小一个问题.......麻烦指点一下....
- TrueTypeFont.open() NullPointerException问题
- 怎么编写交换2个变量的值的方法
- 帮忙看看为什么第二种写法报错呢?第一种就没问题。应该怎么改呢?
- 求救:Tomcat问题
- 上传文件时在弹出框如何指定某类型文件如(*.jpg)
- Java中关于集合存储和取出数组的问题?
- Unrecognized SSL message, plaintext connection?
- 求助:JAVA 打印矩阵。输入为1,输出如下三维矩阵;输入为2时,输出五维矩阵;输入为3时,输出为七维矩阵。
等高手,O(∩_∩)O~
public class User{ @Override
public String toString(){
return this.name;
} @Override String hashCode(){
return User.class.toString()+toString();
} @Override boolean equals(Object object){
if(object==null) return this==null;
return object.toString().equals(toString());
}
}
String name;
String password;
User(String name,String password){
this.name=name;
this.password=password;
}
public String toString(){
return "Name :"+name+" "+"Password:"+password;
}
public boolean equals(Object obj){
if(obj instanceof User){
User user=(User)obj;
return (name.equals(user.name))&&(password.equals(user.password));
}
return super.equals(obj);
}
public int hashCode(){
return name.hashCode();
}
}
1
[Name :bb Password:22]
import java.util.*;
public class TestSet {
public static void main(String[] args) {
User u1 = new User("aa","11");
User u2 = new User("bb","22");
Set sets = new HashSet();
sets.add(u1);
sets.add(u2);
sets.remove(u1);//删除点一个User对象,然后进行验证 试验结果成功
System.out.println(sets.size());
System.out.println(sets);
}
}
class User{
String name;
String password;
User(String name,String password){
this.name=name;
this.password=password;
}
public String toString(){
return "Name :"+name+" "+"Password:"+password;
}
public boolean equals(Object obj){
if(obj instanceof User){
User user=(User)obj;
return (name.equals(user.name))&&(password.equals(user.password));
}
return super.equals(obj);
}
public int hashCode(){
return name.hashCode();
}
}
你都remove了,那set中肯定就留一个对象啊
下面的重写equals和hashcode又有什么意义
实现机制就是这样的。具体可以看一下Map的机制就行了...