给定一个对象列表(List<MyClass>
对象)。
class MyClass {
int id;
String name;
}
还有一个包含名称的列表:
- 姓名1
- 姓名2
- 姓名3
编写比较器以使用名称列表作为优先级列表并且如果名称不存在优先级则使用字母顺序,有什么好方法?
最佳答案
我建议您使用 java.util.Collections.sort
方法,并提供自定义比较器。
// Define a new static comparator attribute for your class
public static Comparator<MyClass> MY_COMPARATOR = new Comparator<>() {
@Override
public int compare(MyClass o1, MyClass o2) {
return o1.name.compareTo(o2.name); // or whatever logic
}
};
//Then just call this to sort when you need it
List<MyClass> myList; // initialised somewhere
Collections.sort(myList, MY_COMPARATOR);
如果您使用的是 java 8+,那么创建比较器的代码会更短:
public static Comparator<MyClass> MY_COMPARATOR = (o1, o2) -> o1.name.compareTo(o2.name);
关于Java 按优先级列表排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31235938/