java list按字母排序_如何按字母顺序对列表进行排序?

使用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更清晰。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值