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
列表按元素索引"排序".这意味着它们保留了元素插入的顺序.集合(通常)不保留这样的顺序.一些例外:
TreeSet是一个特殊的Set,它保持其元素自然"排序"的顺序.LinkedHashSet是一个特殊的Set,确实保留了插入顺序.如果您想"订购"您的列表,您必须手动执行此操作:
Collections.sort(list);
Run Code Online (Sandbox Code Playgroud)
实际上,通过"排序"列表,您将重新排列所有列表元素索引.请参阅相关的JavadocCollections.sort()