有一道题
1. import java.util.*; 
2. public class Example { 
3. public static void main(String[] args) { 
4. // insert code here 
5. set.add(new Integer(2)); 
6. set.add(new Integer(1)); 
7. System.out.println(set); 
8. } 
9. } 
请问要在第 4 行插入哪个程式码,才能保证此程式会输出 [1, 2] 
A. Set set = new TreeSet(); 
B. Set set = new HashSet(); 
C. Set set = new SortedSet(); 
D. List set = new SortedList(); 
E. Set set = new LinkedHashSet(); 
Answer: A 
-----------------------------------------------
我测试了一下,发现B也对,一般来说HashSet是无序的,为什么对整型就能够有序输出呢,请大家帮忙解答一下,谢谢

解决方案 »

  1.   

        public static void main(String[] args) {
            Set<Integer> set = new HashSet<Integer>();
            set.add(new Integer(1));
            set.add(new Integer(16));
            System.out.println(set);
        }
      

  2.   

    HashSet是按Hash码输出的,即使能输出[1, 2],也不能说明它是有序输出,你可以多加入一些数值看下。因为,这道题目主要测试你对Set的知识理解,是不能看表面的输出的结果的。
      

  3.   

    是B,考察的内容正如上楼所说的,是考Set集的知识点。
      

  4.   


    hashSet是没有顺序的,既不按照大小排序,也不会按照插入时的顺序。他的内部是通过hashMap来实现的。估计和
    hash码有关系
    eg:
        public static void main(String[] args)
        {
            Set<Integer> set = new HashSet<Integer>();
            set.add(new Integer(1));
            set.add(new Integer(16));
            set.add(new Integer(3));
            set.add(new Integer(5));
            System.out.println(set);    }out:
    [16, 1, 3, 5]
      

  5.   

                    Set<Integer> set = new HashSet<Integer>();
    set.add(new Integer(2));
    set.add(new Integer(1));
    set.add(new Integer(5));
    set.add(new Integer(3));
    System.out.println(set);
    out:[1, 2, 3, 5]
    ------------------------
    谢谢各位,这道题如何只输出1,2,B结果也是对的,这也许是表面的吧,多加几个值就发现不是按顺序输出了
    Set<Integer> set = new HashSet<Integer>();
    set.add(new Integer(2));
    set.add(new Integer(1));
    set.add(new Integer(5));
    set.add(new Integer(3));
    set.add(new Integer(31));
    set.add(new Integer(38));
    set.add(new Integer(10));
    set.add(new Integer(12));
    System.out.println(set);
    output:[1, 2, 3, 38, 5, 10, 12, 31]
      

  6.   

    显然是A。HashSet是不保证有序的。
    SortedSet是个抽象类。
    SortedList类不存在。
    LinkedHashSet是HashSet的子类,也是不保证有序的。只有TreeSet保证有序。因此选A。
      

  7.   

    当然是A呀,TreeSet是红黑树,HashSet是根据hashcode来排序的。
      

  8.   

    选A 
    API:此类实现 Set 接口,该接口由 TreeMap 实例支持。此类保证排序后的 set 按照升序排列元素,根据使用的构造方法不同,可能会按照元素的自然顺序 进行排序(参见 Comparable),或按照在创建 set 时所提供的比较器进行排序。
    public static void main(String[] args) { 
      Set set = new TreeSet();
     set.add(new Integer(2)); 
     set.add(new Integer(1)); 
     set.add(new Integer(15)); 
     set.add(new Integer(14)); 
     set.add(new Integer(16)); 
     set.add(new Integer(13)); 
     set.add(new Integer(18)); 
     set.add(new Integer(12)); 
     System.out.println(set);