public static voidmain(String[] args) {
///排序条件
List orderRegulation = Arrays.asList("G102", "G103", "G108", "29", "28", "25", "24", "G109", "G105", "26", "21");
//targetList进行排序
List targetList = new ArrayList();
Posts post3= newPosts();
post3.setId("G102");
post3.setName("xiaoli3");
post3.setAge("23");
Posts post2= newPosts();
post2.setId("G103");
post2.setName("xiaoli2");
post2.setAge("22");
Posts post4= newPosts();
post4.setId("G109");
post4.setName("xiaoli4");
post4.setAge("25");
Posts post7= newPosts();
post7.setId("G107");
post7.setName("xiaoli7");
post7.setAge("21");
Posts post8= newPosts();
post8.setId("G101");
post8.setName("xiaoli8");
post8.setAge("26");
Posts post5= newPosts();
post5.setId("G105");
post5.setName("xiaoli5");
post5.setAge("27");
Posts post1= newPosts();
post1.setId("G104");
post1.setName("xiaoli1");
post1.setAge("29");
Posts post6= newPosts();
post6.setId("G106");
post6.setName("xiaoli6");
post6.setAge("23");
Posts post9= newPosts();
post9.setId("G106");
post9.setName("xiaoli9");
post9.setAge("25");
Posts post10= newPosts();
post10.setId("G104");
post10.setName("xiaoli10");
post10.setAge("28");
targetList.add(post1);
targetList.add(post2);
targetList.add(post3);
targetList.add(post4);
targetList.add(post5);
targetList.add(post6);
targetList.add(post7);
targetList.add(post8);
targetList.add(post9);
targetList.add(post10);
System.out.println("排列前的数据:");
targetList.forEach(t-> System.out.print(t.getId() t.getName() "~" t.getAge() " "));
System.out.println();
setListOrder(orderRegulation, targetList);
System.out.println("排序规则:");
orderRegulation.forEach(t-> System.out.print(t " "));
System.out.println();
System.out.println("排列数据:");
targetList.forEach(t-> System.out.print(t.getId() t.getName() "~" t.getAge() " "));
}///平时可以用其中一个排序,以下是两个条件的综合排序
public static void setListOrder(List orderRegulation, ListtargetList) {//按照Posts的Id来排序
Collections.sort(targetList, ((o1, o2) ->{int io1 =orderRegulation.indexOf(o1.getId());int io2 =orderRegulation.indexOf(o2.getId());
//如果排序值在多余排序条件下的值,则将多余值放在排序值后面if (io1 == -1) {
io1= targetList.size() -io1;
}if (io2 == -1) {
io2= targetList.size() -io2;
}return io2 -io1;
}));//按照Posts的age来排序
Collections.sort(targetList, ((o1, o2) ->{int io1 =orderRegulation.indexOf(o1.getAge());int io2 =orderRegulation.indexOf(o2.getAge());if (io1 == -1) {
io1= targetList.size() -io1;
}if (io2 == -1) {
io2= targetList.size() -io2;
}return io2 -io1;
}));
}