/**
* 两个集合按照指定的顺序进行排序
* @param list 排序规则
// List<String> list = Arrays.asList("test2","test1","test4","test3");
* @param usersList 排序对象集合
// Users users1 = new Users();
// users1.setUserId("1");
// users1.setUserName("test1");
//
// Users users2 = new Users();
// users2.setUserId("2");
// users2.setUserName("test2");
//
// Users users3 = new Users();
// users3.setUserId("3");
// users3.setUserName("test3");
//
// Users users4 = new Users();
// users4.setUserId("4");
// users4.setUserName("test4");
//
// List<Users> userList = new ArrayList<>();
// userList.add(users1);
// userList.add(users2);
// userList.add(users3);
// userList.add(users4);
*/
private void sort(List<String> list,List<Users> usersList){
if (CollectionUtils.isEmpty(list) && CollectionUtils.isEmpty(usersList)){
return;
}
Collections.sort(usersList, ((o1, o2) -> {
int io1 = list.indexOf(o1.getUserName());
int io2 = list.indexOf(o2.getUserName());
if (-1 != io1) {
io1 = usersList.size() - io1;
}
if (-1 != io2) {
io2 = usersList.size() - io2;
}
return io2 - io1;
}));
}
排序前输出顺序:
{user1,user2,user3,user4}
排序后输出顺序
{user2,user1,user4,user3}
排序规则对象也可以为另一个对象的某一个属性,不单单限于字符串