java - 高效的集合使用

标签 java sorting priority-queue comparator string-comparison

<分区>

我正在做一个小项目,想知道通过以下方式订购一堆 Strings 的最佳(最有效)方式是什么:

  1. 它们的长度
  2. 按字母顺序

前者是最初排序的方式。

我正在考虑使用优先级队列,但我不确定是否有更有效的方法来对 Strings 进行排序。

此外,我很难弄清楚如何在按长度排序后按字母顺序排序。如果有人有更好的方法来对这些进行排序,或者知道如何在第一次排序后进行排序,那么答案会很好。

最佳答案

您可以期望的最有效的比较排序实现将在 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);

关于java - 高效的集合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32571770/

相关文章:

sql - 改变 NULL 在排序中的位置

java - 如何在 Jelastic Tomcat 中引用 DLL 文件

java - 如何防止 jar 在构建过程中多次编译

Linux CSV 根据大文件中的旧日期删除重复项(超过 100k 记录)

python - 字典按键长排序

java - 不干扰原始 PriorityQueue 的 PriorityQueue 副本

java - 如何在优先级队列中实现正确的排序算法?

java - 在 Java 中使用新的且相同的返回类型实例进行向下转型

java - 使用 Java ReSTLet 进行参数解析

java - 给定一个输入数组和求和,返回求和所需的最少元素