Java8 Stream流详细讲解

文章展示了如何使用JavaStreamAPI对List进行排序,包括基础的升序排序和自定义排序,以及如何从学生对象列表中提取年龄列表,计算最大、最小、平均年龄和年龄总和,最后演示了reduce方法的使用。
摘要由CSDN通过智能技术生成

1.sorted排序(升序)

List<String> list = Arrays.asList("aa", "ff", "dd","cc");
//String 类自身已实现Compareable接口
list.stream().sorted().forEach(System.out::println);

 2.先按姓名升序,姓名相同则按年龄升序

Student s1 = new Student("aa", 10);
Student s2 = new Student("bb", 20);
Student s3 = new Student("aa", 30);
Student s4 = new Student("dd", 40);
List<Student> studentList = Arrays.asList(s1, s2, s3, s4);
       studentList.stream().sorted(Comparator.comparing(Student::getName).reversed()).collect(Collectors.toList());
        // 自定义排序:先按姓名升序,姓名相同则按年龄升序
        studentList.stream().sorted(
                (o1, o2) -> {
                    if (o1.getName().equals(o2.getName())) {
                        return o1.getAge() - o2.getAge();
                    } else {
                        return o1.getName().compareTo(o2.getName());
                    }
                }
        ).forEach(System.out::println);

 3.把年龄封装成List

 List<Integer> ageList = studentList.stream().map(Student::getAge).collect(Collectors.toList());

 

 4.获取最大年龄,获取最小年龄用min() 

Integer max = studentList.stream().map(Student::getAge).max(Integer::compare).get();

 5.获取平均年龄

Double aver = studentList.stream().collect(Collectors.averagingDouble(Student::getAge));

6.获取年龄和 

Integer sum = studentList.stream().mapToInt(Student::getAge).sum();

 7.Reduce合并流的元素,并生成一个值

int sum1 = Stream.of(1, 2, 3, 4).reduce(0, (a, b) -> a + b);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值