要向集合中添加不重复的对象
但这些对象是每次新生成的,如下
class xx
{
public xx(int i)
{
}
}public class tt
{
public void static main(){
HashSet h=new HashSet();
int i=11000;
while(i-->0)
{
xx x=new xx(得到的整形参数);
if(!h.contains(x))
{
h.add(x);
} }
}
}因为x是每次都新生成的,所以即使它们的参数是一样的,也不是同一个实例,因此h还是把它加进去了,我希望如果已经有相同参数的xx实例了就不添加,望高手指点应该怎么做?问题是h中所添加的对象数应该是很多的,循环判断效率太低,不知道还有什么好办法
但这些对象是每次新生成的,如下
class xx
{
public xx(int i)
{
}
}public class tt
{
public void static main(){
HashSet h=new HashSet();
int i=11000;
while(i-->0)
{
xx x=new xx(得到的整形参数);
if(!h.contains(x))
{
h.add(x);
} }
}
}因为x是每次都新生成的,所以即使它们的参数是一样的,也不是同一个实例,因此h还是把它加进去了,我希望如果已经有相同参数的xx实例了就不添加,望高手指点应该怎么做?问题是h中所添加的对象数应该是很多的,循环判断效率太低,不知道还有什么好办法
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
HashSet<TT> set = new HashSet<TT>();
set.add(new TT(1));
set.add(new TT(2));
System.out.println(set);
set.add(new TT(1));
System.out.println(set); }}class TT{
int a;
public TT(int a){
this.a = a;
}
public int hashCode(){
return a;
}
public boolean equals(Object o){
return o instanceof TT ? ((TT)o).a==a : false;
}
public String toString(){
return ""+a;
}
}
另外HashSet则需要定义hashCode,有关用到Hash容器的一般都把hashCode override比较好