java8新特性-stream常用方法

java8新特性-stream常用方法

  • 创建对象及示例集合
@Data
@AllArgsConstructor
public class User {
    private Integer age;
    private String userName;
    private Double height;
    private Double weight;
    private String className;
}
 List<User> userList = new ArrayList<>();
        User user1 = new User(15,"zhangsan1",175.5,130.0,"1班");
        User user2 = new User(16,"zhangsan2",174.5,131.0,"2班");
        User user3 = new User(19,"zhangsan3",173.5,132.0,"1班");
        User user4 = new User(18,"zhangsan4",172.5,133.0,"1班");
        User user5 = new User(19,"zhangsan5",171.5,134.0,"3班");
        userList.add(user1);
        userList.add(user2);
        userList.add(user3);
        userList.add(user4);
        userList.add(user5);
  • 方法
    1.map方法
    需求:取出上述userList中user的age属性集合
List<Integer> ageList = userList.stream().map(User::getAge).collect(Collectors.toList());
System.out.println("筛选user对象集合中的年龄"+ageList);

打印结果:

筛选user对象集合中的年龄[15, 16, 19, 18, 19]
  1. sort排序
    需求:根据user的身高将上述userList进行排序
 List<Integer> ageList2 = userList.stream().map(User::getAge)
               .sorted(Comparator.comparing(Integer::intValue)).collect(Collectors.toList());
 List<Integer> ageList3=userList.stream().map(User::getAge)
    .sorted(Comparator.comparing(Integer::intValue).reversed()).collect(Collectors.toList());
 System.out.println("根据user的身高进行排序,升序"+userList1);
 System.out.println("根据user的身高进行排序,降序"+userList2);

打印结果:

筛选user对象集合中的年龄,升序[15, 16, 18, 19, 19]
筛选user对象集合中的年龄,降序[19, 19, 18, 16, 15]
  1. filter过滤筛选
    需求:查询出userList中年龄大于18的user
 List<User> filterAgeList = userList.stream()
 			.filter(user -> user.getAge() > 18).collect(Collectors.toList());
System.out.println("查询出user集合中年龄大于18的"+filterAgeList);

打印结果:

查询出user集合中年龄大于18[User(age=19, userName=zhangsan3, height=173.5, weight=132.0, className=1),
 User(age=19, userName=zhangsan5, height=171.5, weight=134.0, className=3)]
  1. mapToInt聚合
    需求:获取userList中所有人年龄总和
int ageSum = userList.stream().mapToInt(User::getAge).sum();
System.out.println("获取user集合所有人的年龄总和"+ageSum);

打印结果:

获取user集合所有人的年龄总和:87
  1. groupingBy分组
    需求:根据班级分组
 Map<String, List<User>> classNameGroupList = userList.stream()
 			.collect(Collectors.groupingBy(User::getClassName));
 System.out.println("根据班级分组"+classNameGroupList);

打印结果:

根据班级分组:
{3=[User(age=19, userName=zhangsan5, height=171.5, weight=134.0, className=3)], 
2=[User(age=16, userName=zhangsan2, height=174.5, weight=131.0, className=2)],
1=[User(age=15, userName=zhangsan1, height=175.5, weight=130.0, className=1), 
	User(age=19, userName=zhangsan3, height=173.5, weight=132.0, className=1), 
	User(age=18, userName=zhangsan4, height=172.5, weight=133.0, className=1)]}

备注:
java8的stream流方法是链式,方法可直接链式调用。

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值