设置默认排序或不排序?

Rav*_*ekh 6 java

更新

    Set s = new HashSet();
    s.add(1);
    s.add(5);
    s.add(4);
    s.add(9);
    s.add(7);
    s.add(8);        
    s.add("b");
    s.add("a");
    s.add("B");
    s.add("A");
    s.add("s");
    s.add("x");        
    s.add("d");        
    System.out.println(s);
    s.remove("b");
    s.remove("d");
    System.out.println(s);
Run Code Online (Sandbox Code Playgroud)

输出:

[1, d, 4, b, 5, A, B, 7, a, 8, 9, s, x]
[1, 4, 5, A, B, 7, a, 8, 9, s, x]
[1, 4, 5, A, B, 7, a, 8, 9, s, x]
Run Code Online (Sandbox Code Playgroud)

当我们添加时需要一些设置默认排序整数值的信息,但如果我将字符串添加到集合中,默认情况下不会排序。

更新: 而且大写字母在运行多次后总是会排序。

java 版本“1.6.0_26”Java(TM) SE 运行时环境(版本 1.6.0_26-b03) Java HotSpot(TM) 客户端 VM(版本 20.1-b02,混合模式,共享)

请给我一些想法。谢谢

NPE*_*NPE 4

HashSet不保证其内容将以任何方式排序。有一个特殊的集合接口可以提供这样的保证:它被称为SortedSet

ASet进一步提供其元素的总排序。元素使用其自然顺序或Comparator 通常在排序集创建时提供的顺序进行排序。集合的迭代器将以升序元素顺序遍历集合。提供了几个附加操作来利用排序。(此接口是 的设置模拟SortedMap。)

在Java 6中,有两个类实现了这个接口:ConcurrentSkipListSetTreeSet