Java,按自定义字母顺序对arraylist进行排序

标签 java sorting arraylist

假设我有

arrayList<String> fruits

包含

{"banana", "apple", "grape", "banana", "banana", "grape"}

我知道如何使用比较器(如下)按字母顺序对这些进行排序:

Collections.sort(fruits, new Comparator<Fruit>() {
        public int compare(Fruit o1, Fruit o2) {
            return o1.getName().compareTo(o2.getName());
        }
    });

但是那会给我 {"apple", "banana", "banana", "banana", "grape", "grape"}。我将如何更改此设置,以便首先列出所有香蕉,然后是苹果,然后是葡萄?谢谢!

最佳答案

这可能有助于您入门:

List<String> fruitsOrder = Arrays.asList(new String[]{"banana","apple","grape"});
Comparator<String> c = Comparator.comparingInt(str -> fruitsOrder.indexOf(str));

您可以通过规范化大小写和/或使用 Comparator.thenComparing 进一步完善它,以使不在列表中的水果具有一致的顺序。

关于Java,按自定义字母顺序对arraylist进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43283562/

相关文章:

java - 是否可以在 JAVA 中的 ArrayList<double[][]> 中存储 double[][] 数组?

java - 如何在 encog XOR 函数中提供字符串作为输入和输出?

Java 泛型转换类型不匹配

java - ColdFusion:关于使用自定义 "own written"Java 类

c - 按字典顺序打印所有排列

java - 在java中将字符串转换为arraylist <Character>

java - native 事件在带有 selenium 的不同版本的 Firefox 上表现不同

algorithm - boolean 值排序,O(N) 时间,O(1) 空间

json - Python 3 json.load() 以错误的顺序读取 JSON 文件

java - 制作一个包含与第一个列表相同的对象的新ArrayList?