实体类
public class User {
private Long id;
//姓名
private String name;
//年龄
private int age;
//工号
private String jobNumber;
//性别
private String sex;
//入职日期
private Date entryDate;
//家庭成员数量
private BigDecimal familyMemberQuantity;
}
lambda操作
参考:点击跳转
List<User> userList = null;
//分组,sex不能为null。
Map<String, List<User>> groupBySex = userList.stream().collect(Collectors.groupingBy(User::getSex));
//过滤,排除掉工号为201901的用户
List<User> userCommonList = userList.stream().filter(a -> !a.getJobNumber().equals("201901")).collect(Collectors.toList());
//求和,基本类型
int sumAge = userList.stream().mapToInt(User::getAge).sum();
//求和,BigDecimal类型。familyMemberQuantity不能为null
BigDecimal totalQuantity = userList.stream().map(User::getFamilyMemberQuantity).reduce(BigDecimal.ZERO, BigDecimal::add);
//list转map;如果有重复的key,则保留key1,舍弃key2
Map<Long, User> userMap = userList.stream().collect(Collectors.toMap(User::getId, a -> a,(k1,k2)->k1));
//排序,单字段排序,根据id排序
userList.sort(Comparator.comparing(User::getId));
//排序,多字段排序,根据id,年龄排序
userList.sort(Comparator.comparing(User::getId).thenComparing(User::getAge));
//获取list对象的某个字段组装成新list
List<Long> userIdList = userList.stream().map(a -> a.getId()).collect(Collectors.toList());
// 将3个list合成1个
List<Integer> list1 = Arrays.asList(1, 2, 3);
List<Integer> list2 = Arrays.asList(4, 5, 6);
List<Integer> list3 = Arrays.asList(7, 8, 9);
List<Integer> mergedList = Stream.of(list1, list2, list3).flatMap(Collection::stream).collect(Collectors.toList());
System.out.println(mergedList);// [1, 2, 3, 4, 5, 6, 7, 8, 9]`