有一道题
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. 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是无序的,为什么对整型就能够有序输出呢,请大家帮忙解答一下,谢谢
Set<Integer> set = new HashSet<Integer>();
set.add(new Integer(1));
set.add(new Integer(16));
System.out.println(set);
}
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]
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]
SortedSet是个抽象类。
SortedList类不存在。
LinkedHashSet是HashSet的子类,也是不保证有序的。只有TreeSet保证有序。因此选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);
}