package pkg2;
import java.util.*;
public class Test{
public static void main( String args[ ] ){
List<Integer>myList=new ArrayList<Integer>();
myList.add(123);
myList.add(123);
myList.add(123);
System.out,println(myList.size());
Set<Integer>mySet=new HashSet<Integer>();
mySet.add(123);
mySet.add(123);
mySet.add(123);
System.out.println(mySet.size());
Set<String> mySet2 = new HashSet<String>();
mySet2.add(new String("123"));
mySet2.add(new String("123"));
mySet2.add(new String("123"));
System.out.println( mySet2.size() );
Set<String> mySet3 = new HashSet<String>();
String a = new String("123");
String b = new String("123");
String c = new String("123");
mySet3.add(a);
mySet3.add(b);
mySet3.add(c);
System.out.println( a==b );//引用确实是不一样的
System.out.println( "a hash:"+a.hashCode() );//引用确实是不一样的,但hash值一样,因为内容相同
System.out.println( "b hash:"+b.hashCode() );//引用确实是不一样的,但hash值一样,因为内容相同
System.out.println( "c hash:"+c.hashCode() );//引用确实是不一样的,但hash值一样,因为内容相同
System.out.println( mySet3.size() );
Set<Student> mySet4 = new HashSet<Student>();
Student sa = new Student();
Student sb = new Student();
Student sc = new Student();
sa.setUserName("123");
sb.setUserName("123");
sc.setUserName("123");
mySet4.add(sa);
mySet4.add(sb);
mySet4.add(sc);
System.out.println( sa==sb );//引用确实是不一样的
System.out.println( "sa hash:"+sa.hashCode() );//引用确实是不一样的,但hash值一样,因为内容相同
System.out.println( "sb hash:"+sb.hashCode() );//引用确实是不一样的,但hash值一样,因为内容相
System.out.println( "sc hash:"+sc.hashCode() );//引用确实是不一样的,但hash值一样,因为内容相
System.out.println( mySet4.size() );
Set<String> mySet5 = new HashSet<String>();
mySet5.add("abc");
mySet5.add("abc");
mySet5.add("abc");
mySet5.add(null);
mySet5.add(null);
System.out.println( mySet5.size() );
for(String x:mySet5){
System.out.println( x );
}
for(String x:mySet6){
System.out.println( x );
}
}
}