public static void main(String[] args) {
List<Member> list = getMemberList();
// list去重
list = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(Member::getId))), ArrayList::new));
// list排序 注册时间倒叙
List<Member> memberSort = list.stream().sorted(Comparator.comparing(Member::getRegistrationDate).reversed()).collect(Collectors.toList());
// list分组 根据会员等级分组
Map<Integer, List<Member>> memberGroup = list.stream().collect(Collectors.groupingBy(Member::getLevel));
// list取对象属性 会员姓名
List<String> memberName = list.stream().map(Member::getName).distinct().collect(Collectors.toList());
// list取两个属性 获取会员姓名及余额
Map<String, BigDecimal> memberNameRemain = list.stream().collect(Collectors.toMap(Member::getName, Member::getRemainingSum));
// 转map键不能重复 或为空
Map<String, Member> memberInfo = list.stream().collect(Collectors.toMap(Member::getName, Function.identity(), (entity1, entity2) -> entity1));
// list过滤 筛选余额不为0的
List<Member> memberRemain = list.stream().filter(e -> (e.getRemainingSum() != null && !e.remainingSum.equals(new BigDecimal("0")))).collect(Collectors.toList());
// list计算 计算总余额
BigDecimal totalRemain = memberRemain.stream().map(Member::getRemainingSum).reduce(BigDecimal.ZERO, BigDecimal::add);
//截取 取前2个会员
List<Member> top2Members = list.stream().limit(2).collect(Collectors.toList());
//截取 过滤掉前2个会员
List<Member> skipTop2Members = list.stream().skip(2).collect(Collectors.toList());
}
@Data
static class Member {
private Long id;
private String name;
private Integer level;
private BigDecimal remainingSum;
private Date registrationDate;
}