使用Collections.sort解决方案
如果您被迫使用该List,或者您的程序具有类似的结构
创建列表
添加一些国家名称
排序他们一次
永远不要再改变那个清单
然后Thilos的回答将是最好的方式。如果你把它与Tom Hawtin的建议结合起来-你会得到:
java.util.Collections.sort(listOfCountryNames, Collator.getInstance());
使用TreeSet的解决方案
如果您可以自由决定,并且您的应用程序可能会变得更复杂,那么您可能会更改代码以使用TreeSet。这种集合在插入时对您的条目进行排序。无需调用sort()。
Collection countryNames =
new TreeSet(Collator.getInstance());
countryNames.add("UK");
countryNames.add("Germany");
countryNames.add("Australia");
// Tada... sorted.
关于为什么我更喜欢TreeSet的旁注
这有一些微妙但重要的优点:
它只是更短。但是只有一条线更短。
永远不要担心这个列表现在真正排序,因为无论你做什么,TreeSet总是排序。
您不能有重复的条目。根据您的情况,这可能是专业人士或骗子。如果您需要重复,请坚持您的列表。
一位经验丰富的程序员看着TreeSet countyNames并立即知道:这是一个排序的字符串集合,没有重复,我可以肯定这是每时每刻都是如此。简短声明中的大量信息。
在某些情况下真正的表现胜利。如果您使用List并经常插入值,并且可以在这些插入之间读取列表,则必须在每次插入后对列表进行排序。该集合也是如此,但速度要快得多。
使用正确的集合来完成正确的任务是编写简短和无错误代码的关键。在这种情况下,它不是示范性的,因为您只需保存一行。但我已经停止计算,当他们想要确保没有重复项时,我会看到有人使用List,然后自己构建该功能。或者更糟糕的是,当你真正需要Map时使用两个列表。
不要误会我的意思:使用Collections.sort不是错误或缺陷。但是在很多情况下,TreeSet更清晰。