展开全部
因为你存储T类型的时候,set集合里面存储的是T的对象,你创建了三个对象t1,t2,t3,虽然这三62616964757a686964616fe4b893e5b19e31333335313239个对象的id都是1,但是这三个对象是不同的对象,所以存在set里面会都存在。
而下面那个集合存储的是字符串,存在在s里面的时候就是比较的是字符串的值,由于你的s1,s2,s3的值是相同的,你虽然加了双引号,但是没有作用。给你看看样列,你应该就清楚了!
程序代码1:import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class test{
public static void main(String[] args) throws IOException
{
Set s=new HashSet();
s.add("1");
s.add("1"+"");
s.add(""+"1");//这里其实三个字符串的值是相同的。比较不能用==而要用equals
Iterator it=s.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
运行结果1:
程序代码2:import java.io.IOException;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class test{
public static void main(String[] args) throws IOException
{
Set s=new HashSet();
s.add("1");
s.add("1"+" ");
s.add(" "+"1");//这里其实三个字符串的值都是不相等
Iterator it=s.iterator();
while(it.hasNext())
{
System.out.println(it.next());
}
}
}
运行结果2: