【问题标题】:Efficient Collections Use [closed]高效的集合使用[关闭]
【发布时间】:2015-09-14 18:44:16
【问题描述】:
我正在做一个小项目,想知道通过以下方式订购一堆Strings 的最佳(最有效)方式是:
- 它们的长度
- 按字母顺序
前者是最初排序的方式。
我正在考虑使用优先级队列,但我不确定是否有更有效的方法来对Strings 进行排序。
此外,在按长度排序后,我很难弄清楚如何按字母顺序排序。如果有人有更好的方法对这些进行排序或在第一次排序后知道如何排序,那么答案会很好。
【问题讨论】:
标签:
java
sorting
priority-queue
comparator
string-comparison
【解决方案1】:
您所希望的最有效的比较排序实现将在 O(nlogn) 时间内运行。有很多算法可供选择。 Java 内置了这个功能。
要按长度排序字符串,然后按字母顺序,您应该使用Comparator<String> 实现自己的字符串比较方法
Comparator<String> comparator = new Comparator<String>(){
@Override
public int compare(String s1, String s2) {
//TODO define the comparison based on length, and then alphabetically
return 0;
}
};
List<String> strings = ...
Collections.sort(strings, comparator);