假设我有
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/