1.list排序
//根据实体类某个属性排序
List<Meta> filterAtts = new ArrayList<>();
filterAtts.sort(Comparator.comparing(Meta::getOrder));
//根据Document或者Map某个key值排序
List<Document> collect = list.stream().sorted(
Comparator.comparing(document ->
document.getString("createTime")))
.collect(Collectors.toList());
//根据Document或者Map某个key值去重排序
ArrayList<Document> result =
list.stream()
.collect(
Collectors.collectingAndThen(
Collectors.toCollection(
() -> new TreeSet<>(Comparator.comparing(doc ->
doc.getString("id")))),
ArrayList::new));
//合并两个list中的时间,根据时间排序
List<String> dates = documents.stream().map(document -> document.getString("date")).collect(Collectors.toList());
List<String> jpaDates = apiReportFiless.stream().map(reportFiles -> reportFiles.getCreateTime()).collect(Collectors.toList());
//合并list
List<String> union = (List<String>) CollectionUtils.union(dates, jpaDates);
//排序
Collections.sort(union, new Comparator<String>() {
@Override
public int compare(String p1, String p2) {
return p2.compareTo(p1);
}
});
//排序+分页
List<String> collect = list.stream().sorted().skip((pageNo - 1) * pageSize)
.limit(pageSize).collect(Collectors.toList());
2.list过滤
List<String> listString=lists.stream()
.filter(metadata -> metadata.isInvisible() == true)//过滤
.map(metadata -> metadata.getMetaId()) //获取id集合
.collect(Collectors.toList()));
3.list取交集,并集,差集
// 引入的包
<dependency>
<groupId>commons-collections</groupId>
<artifactId>commons-collections</artifactId>
<version>3.2.2</version>
</dependency>
List<String> list=new ArrayList<>();
List<String> list2=new ArrayList<>();
//交集
list.retainAll(list2);
//或
Collection intersection = CollectionUtils.intersection(list1, list2);
//并集
Collection union = CollectionUtils.union(list1, list2);
//或
Set<Integer> unionSet = new HashSet<>();
unionSet.addAll(list1);
unionSet.addAll(list2);
System.out.println("set 并集结果是:" + unionSet);
//差集
Collection subtract = CollectionUtils.subtract(list1, list2);
//或通过reoveAll方法,会修改原集合
list1.removeAll(list2);