1、排序
List<WorkFlowAuditByVO> auditByListNew = auditByList.stream()
.sorted(Comparator.comparing(WorkFlowAuditByVO::getStep))
.collect(Collectors.toList());
// 正序
List<Ticket> list = tickets.stream().sorted(Comparator.comparing(Ticket::getPlanTime)).collect(Collectors.toList());
// 倒序
List<Ticket> list = tickets.stream().sorted(Comparator.comparing(Ticket::getPlanTime).reversed()).collect(Collectors.toList());
2、从对象集合中获取属性集合
List<String> userIds = list.stream()
.map(OntologyMappingTask::getCreatedBy)
.distinct()
.map(String::valueOf).collect(Collectors.toList());
3、通过属性对集合分组
Map<String, List<BusinessModelAttribute>> listMap = attrList.stream()
.collect(Collectors.groupingBy(BusinessModelAttribute::getModelId));
// 对card_id,channel_id,store_id进行分组
Map<String, List<Map<String, Object>>> glist = counts.stream().collect(Collectors.groupingBy(e -> e.get("card_id").toString()+"#"+e.get("channel_id").toString()+"#"+e.get("store_id")));
4、集合中找出重复的属性值
List<String> repeatEntityArrayList = entityArrayList.stream()
.collect(Collectors.groupingBy(a -> a.getName(), Collectors.counting()))
.entrySet().stream().filter(entity -> entity.getValue() > 1)
.map(entity -> entity.getKey())
.collect(Collectors.toList());
转map集合
Map<Long, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, option -> option, (oldOption, newOption) -> newOption));
5、集合去重
// 去重前:[{name=苹果, id=1}, {name=香蕉, id=2}, {name=梨子, id=3}, {name=香蕉, id=4}]
System.out.println("去重前:" + list);
ArrayList<Map<String, String>> mapArrayList = list.stream()
.collect(Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(
s -> String.valueOf(s.get("name"))))), ArrayList::new));
// 去重后:[{name=梨子, id=3}, {name=苹果, id=1}, {name=香蕉, id=2}]
System.out.println("去重后:" + mapArrayList);
// 根据属性name来去重,去重代码如下
List persons = new ArrayList();
//赋值初始化过程省略
List uniqueByName = persons.stream().collect(
Collectors.collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Person::getName))), ArrayList::new)
);
// 根据name,sex两个属性去重
List persons = new ArrayList();
// 赋值初始化过程省略
List uniqueByNameAndSex = persons.stream().collect(
Collectors. collectingAndThen(
Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(o -> o.getName() + ";" + o.getSex()))), ArrayList::new)
);
list.stream().distinct().collect(Collectors.toList());