【发布时间】:2021-07-07 04:29:59
【问题描述】:
我有一个对象列表和一个字符串数组,如下所示。如何根据我的数组对对象列表进行排序?是否可以使用 java 比较器和 collection.sort() ?
等级对象
Class Grade{
private Long keyId;
private String gradeName;
private int classCount;
}
成绩单
List<Grades> grades= new ArrayList<>();
字符串数组
String[] gradeOrder= {"year 1", "year 2", "year 3", "year 4"};
【问题讨论】:
-
简单的解决方案是让
Grades对象实现Comparable然后您可以简单地使用Collections.sort(grades, yourCustomComparator);其中Comparator<Grades> yourCustomComparator = (Grades g1, Grades g2) -> g1.gradeName.compareTo( g2.gradeName);。这将使用正常的字符串排序,谢天谢地,我们可以将其用于您的列表,因为第 1 年到第 4 年都已按顺序排列。 -
@sorfiend 如果数组如下所示怎么办? String[]gradeOrder= {"第 3 年"、"第 2 年"、"第 1 年"、"第 4 年"};
-
那么你的代码可能会很快变得混乱,我鼓励你使用一个enum,它代表一个与比较器一起使用的变量,例如
String YEAR_3 = "sort_1";和String YEAR_2 = "sort_2";或者映射整个列表并使用作为你的比较器
标签: java sorting collections comparator