概述
用stream流根据实体的某个属性对列表进行排序
假设有一个实体类 Person,包含两个属性 name 和 age,你可以使用 stream 流的 sorted() 方法来按照某两个字段进行排序。以下是一个示例代码:
List<Person> personList = new ArrayList<>();
// 填充 personList
List<Person> sortedList = personList.stream()
.sorted(Comparator.comparing(Person::getName).thenComparing(Person::getAge))
.collect(Collectors.toList());
sortedList.forEach(System.out::println);
在上述代码中,我们将 personList 转换成流后,调用了 sorted() 方法,并且使用 Comparator 的 comparing() 和 thenComparing() 方法来指定先按照 name 字段排序,再按照 age 字段排序。
最后,我们收集结果并将其存储在一个新列表 sortedList 中,然后打印出每个人的信息。
当然,这只是一个示例。你需要根据具体的需求和实体类的情况来修改代码。
Map<String, ArrayList<String>> temp = list.stream()
.collect(Collectors.groupingBy(TenantProjectUserDTO::getTenantCode,
Collectors.collectingAndThen(
Collectors.mapping(TenantProjectUserDTO::getProjectCode,
Collectors.toSet()),
ArrayList::new)));
Map<String, ArrayList<String>> temp = list.stream()
.collect(Collectors.groupingBy(TenantProjectUserDTO::getTenantCode,
Collectors.collectingAndThen(
Collectors.mapping(TenantProjectUserDTO::getProjectCode,
Collectors.toCollection(TreeSet::new)),
ArrayList::new)));
根据固定列表的元素顺序排序
PORTAL_ORDER是一个列表
res.sort(((o1, o2) -> {
int i1 = PORTAL_ORDER.indexOf(o1.getName());
int i2 = PORTAL_ORDER.indexOf(o2.getName());
i1 = i1 == -1? Integer.MAX_VALUE: i1;
i2 = i2 == -1? Integer.MAX_VALUE: i2;
return i1-i2;
}));