Java 按优先级列表排序

标签 java comparator

给定一个对象列表(List<MyClass>对象)。

class MyClass {
    int id;
    String name;
}

还有一个包含名称的列表:

  1. 姓名1
  2. 姓名2
  3. 姓名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/

相关文章:

java - 请问appfuse有什么问题吗

Java-如何将黑白图像加载到二进制中?

java - 在自定义创建的比较器中实现compare()方法

Android SortedList 删除方法正在跳过项目

python - 比较Python列表中的数字序列

java - 区分集合中的文件和目录

java - 如何使用java查找webapps目录的路径

java - Groovy StreamingTemplateEngine 使用 withCredentials 函数给出错误

java - 无法使用 apache common io 中的比较器解析方法排序

java - 什么时候类应该是 Comparable 和/或 Comparator?