我有一个包含国家名称的List<String>对象。我如何按字母顺序对这个列表排序?
当前回答
你可以使用下面这行
集合。排序(listOfCountryNames String.CASE_INSENSITIVE_ORDER)
它类似于Thilo的建议,但不会区分大小写字符。
其他回答
使用Collections.sort的两个参数。你会想要一个合适的比较器,处理大小写适当(即词法,而不是UTF16排序),比如通过java.text.Collator.getInstance获得。
你可以使用下面这行
集合。排序(listOfCountryNames String.CASE_INSENSITIVE_ORDER)
它类似于Thilo的建议,但不会区分大小写字符。
除非您只使用无重音的英文对字符串进行排序,否则您可能希望使用Collator。它将正确排序变音符符号,可以忽略大小写和其他特定于语言的东西:
Collections.sort(countries, Collator.getInstance(new Locale(languageCode)));
你可以设置排序器的强度,参见javadoc。
下面是一个斯洛伐克语的例子,Š应该在S后面,但在UTF中Š应该在Z后面。
List<String> countries = Arrays.asList("Slovensko", "Švédsko", "Turecko");
Collections.sort(countries);
System.out.println(countries); // outputs [Slovensko, Turecko, Švédsko]
Collections.sort(countries, Collator.getInstance(new Locale("sk")));
System.out.println(countries); // outputs [Slovensko, Švédsko, Turecko]
这是你要找的东西
listOfCountryNames.sort(String::compareToIgnoreCase)
Java 8,
countries.sort((country1, country2) -> country1.compareTo(country2));
如果String的compareTo不适合您的需要,您可以提供任何其他比较器。