package com.ai.apac.userservice.server; import com.ai.apac.userservice.data.User; import lombok.extern.slf4j.Slf4j; import java.util.*; import java.util.stream.Collectors; @Slf4j public class UserService { public static void main(String[] args) { User user0 = new User(1L,"bbb","bbb"); User user1 = new User(1L,"aaa","bbb"); User user2 = new User(2L,"bbb","bbb"); User user3 = new User(3L,"ccc","bbb"); User user4 = new User(4L,"ccc","bbb"); User user5 = new User(5L,"ccc","bbb"); List<User> userList = new ArrayList<>(); userList.add(user0); userList.add(user1); userList.add(user4); userList.add(user5); userList.add(user5); userList.add(user2); userList.add(user3); if (user0.getId().compareTo(user5.getId()) == 0) { System.out.println("aaa"); } log.debug("\n size={},\n userList = {}",userList.size(),userList.toString()); //1、筛选与切片 //filter:过滤流中的某些元素 List<User> useFilter = userList.stream().filter(user -> user.getUsername().equals("aaa")).collect(Collectors.toList()); log.debug("useFilter :\n size={},\n useFilter = {}",useFilter.size(),useFilter.toString()); //limit(n):获取n个元素 List<User> useLimit = userList.stream().filter(user -> user.getUsername().equals("aaa")).limit(1).collect(Collectors.toList()); log.debug("useFilter :\n size={},\n useLimit = {}",useLimit.size(),useLimit.toString()); //skip(n):跳过n元素,配合limit(n)可实现分页 List<User> useSkip = userList.stream().skip(2L).limit(3).collect(Collectors.toList()); log.debug("useFilter :\n size={},\n useLimit = {}",useSkip.size(),useSkip.toString()); //distinct:通过流中元素的 hashCode() 和 equals() 去除重复元素 List<User> userDistinct = userList.stream().distinct().collect(Collectors.toList()); log.debug("useFilter :\n size={},\n useLimit = {}",userDistinct.size(),userDistinct.toString()); //按照id排序 List<User> userSort = userList.stream().sorted((o1,o2)->o1.getId().compareTo(o2.getId())).collect(Collectors.toList()); log.debug("usersort =",userSort); //按照id排序,如果id相同按照名称排序 List<User> userSort2 = userList.stream().sorted((o1,o2)->{ if (0 !=o1.getId().compareTo(o2.getId())) { return o1.getId().compareTo(o2.getId()); }else { return o1.getUsername().compareTo(o2.getUsername()); } }).collect(Collectors.toList()); log.debug("usersort =",userSort2); //获取id中最大,最小,总数 LongSummaryStatistics intSummaryStatistics = userList.stream().mapToLong(User::getId).summaryStatistics(); System.out.println(intSummaryStatistics.getMin()); System.out.println(intSummaryStatistics.getMax()); System.out.println(intSummaryStatistics.getCount()); } }
List Stream常用方法总结
最新推荐文章于 2024-08-16 15:18:06 发布