常用方法
map映射对象中某个字段的集合
List<Long> userIdList = users.stream().map(User::getId).collect(Collectors.toList());
去重
Srting userIdStr = userIdList.stream().distinct().collect(Collectors.joining(","));
List<Long> userIds = userIdList.stream().distinct().collect(Collectors.toList());
List和Map转换
Map<String, User> map = users.stream().collect(Collectors.toMap(u -> u.getName(), u -> u));
Map<String, User> map1 = users.stream().collect(Collectors.toMap(User::getName, Function.identity()));
Map<String, User> map2 = users.stream().collect(Collectors.toMap(u -> u.getName(), u -> u, (k1, k2) -> k2));
List<User> list = map.entrySet().stream().map(entry -> {
User user = new User();
user.setName(entry.getKey());
user.setAge(entry.getValue().getAge());
return user;
}).collect(Collectors.toList());
排序
List<User> users = new ArrayList<>();
Collections.sort(users, (u1, u2) -> {
return u1.getCreateDate().compareTo(u2.getCreateDate());
});
users.sort((u1, u2) -> {
return u1.getCreateDate().compareTo(u2.getCreateDate());
});
users.sort(Comparator.comparing(User::getCreateDate));
Collections.sort(users, (u1, u2) -> u1.getAge().compareTo(u2.getAge()));
users.sort(Comparator.comparing(User::getAge));
users.sort(Comparator.comparing(User::getAge).reversed().thenComparing(User::getId).reversed());
users.stream().sorted(
(o1, o2) -> {
if (o1.getAge().equals(o2.getAge())) {
return o1.getName().compareTo(o2.getName());
}
return Integer.compare(o1.getAge(), o2.getAge());
}
).collect(Collectors.toList());
users.stream().sorted(Comparator.comparing(User::getAge)).collect(Collectors.toList());
users.stream().sorted(Comparator.comparing(User::getAge).reversed()).collect(Collectors.toList());
users.stream().sorted(Comparator.comparing(User::getAge, Comparator.reverseOrder())).collect(Collectors.toList());
分组
Map<String, List<User>> listMap = users.stream().collect(Collectors.groupingBy(u -> u.getName()));
Map<String, List<User>> listMap = users.stream().collect(Collectors.groupingBy(User::getName()));
Map<Object, Map<Object, List<User>>> listMap1 = users.stream().collect(Collectors.groupingBy(u -> u.getName(), Collectors.groupingBy(u -> u.getAge())));
Map<Boolean, List<User>> collect = users.stream().collect(Collectors.partitioningBy(u -> u.getAge() == 1));