lambda 自定义排序规则(stream.sorted()),实现按照某个集合的顺序排序
// 要排序的规则集合
List<String> sortedList = Arrays.asList("领导", "经理", "员工");
// 要进行排序的数据集合,一般为数据库查询得到
List<User> list = userMapper.selectUser(req);
// 开始排序
list = list.stream().sorted(Comparator.comparing(User::getPosition,(x, y) ->{
// 调用自定义排序工具类
return SortedUtils.customSorted(sortedList, x, y);
})).collect(Collectors.toList());
SortedUtils自定义排序工具类如下
public class SortedUtils {
/**
* 自定义排序
*/
public static int customSorted(List<String> sortedList, String x, String y) {
if (x == null && y != null) {
return 1;
} else if (x != null && y == null) {
return -1;
} else if (x == null && y == null) {
return -1;
} else {
//按照读取的list顺序排序
for (String sort : sortedList) {
if (sort.equals(x) || sort.equals(y)) {
if (x.equals(y)) {
return 0;
} else if (sort.equals(x)) {
return -1;
} else {
return 1;
}
}
}
return 0;
}
}
}