设置vs列表java中的字母顺序

use*_*113 3 java list set

Arent列出有序集合,并且没有订购?那么为什么这个程序按字母顺序对字符串进行排序而不是列表?我理解两者的重复部分.

    PrintStream out = System.out;

    List<String> set = new ArrayList<String>();
    String s = "ILLUSIONS";

    for(int i = 0; i< s.length(); i++)
    {
        set.add((new Character(s.charAt(i))).toString());

    }
    out.println(set);
Run Code Online (Sandbox Code Playgroud)

输出:ILLUSIONS


    PrintStream out = System.out;

    Set<String> set = new TreeSet<String>();
    String s = "ILLUSIONS";

    for(int i = 0; i< s.length(); i++)
    {
        set.add((new Character(s.charAt(i))).toString());

    }
    out.println(set);
Run Code Online (Sandbox Code Playgroud)

输出:ILNOSU

Luk*_*der 7

列表按元素索引"排序".这意味着它们保留了元素插入的顺序.集合(通常)不保留这样的顺序.一些例外:

  • TreeSet是一个特殊的Set,它保持其元素自然"排序"的顺序.
  • LinkedHashSet是一个特殊的Set,确实保留了插入顺序.

如果您想"订购"您的列表,您必须手动执行此操作:

Collections.sort(list);
Run Code Online (Sandbox Code Playgroud)

实际上,通过"排序"列表,您将重新排列所有列表元素索引.请参阅相关的JavadocCollections.sort()