public class SortTest {
private static final List<String> technologyOrder = new ArrayList<>();
private static final List<Student> students = new ArrayList<>();
static {
technologyOrder.add("DDD");
technologyOrder.add("AAA");
technologyOrder.add("CCC");
technologyOrder.add("BBB");
students.add(new Student().setName("EEE").setAge(new Random(100).nextInt()));
students.add(new Student().setName("AAA").setAge(new Random(100).nextInt()));
students.add(new Student().setName("BBB").setAge(new Random(100).nextInt()));
students.add(new Student().setName("CCC").setAge(new Random(100).nextInt()));
students.add(new Student().setName("DDD").setAge(new Random(100).nextInt()));
}
public static void main(String[] args) {
setListOrder(students);
System.out.println(students);
}
private static void setListOrder(List<Student> targetList) {
// 按照 list 里的 mode 来排序 targetList
targetList.sort(((o1, o2) -> {
int io1 = technologyOrder.indexOf(o1.getName());
int io2 = technologyOrder.indexOf(o2.getName());
if (io1 != -1) {
io1 = targetList.size() - io1;
}
if (io2 != -1) {
io2 = targetList.size() - io2;
}
return io2 - io1;
}));
}
}
@Data
@Accessors(chain = true)
public class Student {
private String name;
private Integer age;
private Integer stature;
}