public class TestSet
{
public static void main(String[] args)
{
Random rand = new Random();
Set<String> setStr = new HashSet<String>();
String
aa=new String("aaa"),
bb=new String("aaa");
System.out.println(aa==bb);
setStr.add(aa);
setStr.add(bb);
System.out.println(setStr);
System.out.println(setStr.size());
System.out.println();
}
}
//显示结果是:
//false
//[aaa]
//1
//HashSet里持有的对象是String类或者Integer类,那就可以保证元素的值不重复,但如果存放的是我自己写的类的话,那就肯定会有重复的元素,比如下面这段程序:
Set<MyObj> setobj = new HashSet<MyObj>();
for(int i=0;i<30;i++)
{
setobj.add(new MyObj(rand.nextInt(10)));
}
System.out.println(setobj);
System.out.println(setobj.size());
System.out.println();
//显示结果如下:
//[9, 1, 5, 3, 1, 7, 6, 5, 6, 1, 3, 2, 5, 0, 3, 6, 6, 6, 9, 8, 6, 5, 5, 8, 5, 1, 1, 2, 3, 0]
//30
//很明显元素的值重复了,谁能告诉我这是为什么呢??哎
//另外,MyObj类如下:
public class MyObj implements Comparable<MyObj>,Serializable
{
private int i;
public MyObj(int i)
{
this.i=i;
}
public int getI()
{
return i;
}
public String toString()
{
return Integer.toString(i);
}
public int compareTo(MyObj obj)
{
if (this.getI()>obj.getI())
return 1;
else if (this.getI()==obj.getI())
return 0;
else
return -1;
}
}
//给MyObj类加上了一个hashCode()方法和equals()方法,于是我的MyObj也不重复了,可能HashSet中,这两个方法必须被覆盖
怎么样删除list里面相同的对象??
最新推荐文章于 2020-08-06 07:30:00 发布