Stream的中间操作

测试Stream的中间操作

  1. 筛选与切片
  • filter(Predicate p) -接受Lambda,从流中排除某些元素
  • limit(n) -截断流,使其元素不超过给定数量
  • skip(n) -跳过元素,返回一个扔掉了前n个元素的流。若流中元素不足n个,则返回一个空的元素
  • distinct()-筛选,通过流所生成元素的hashCode()和equals() 去除重复元素
  • @author yangfan
  1. 映射
  • map(Function f) -接受一个函数作为参数,将元素转换成其他形式或提取信息,该函数会被被应用到每一个元素上,并将其映射成一个新的元素
  • flatMap(Function f) - 接收一个函数作为参数,将流中的每个值都换成另外一个流,然后把所有的流连成一个流
  1. 排序
  • sort() -自然排序
  • sorted(Comparator com) -定制排序
public class StreamAPITest1 {
    //1.筛选与切片
    @Test
    public void test1(){
        List< Employee > list = EmployeeData.getEmployees();

//        filter(Predicate p) -接受Lambda,从流中排除某些元素
        Stream< Employee > stream = list.stream();
        //查询工资表中员工工资大于7000的员工信息
        stream.filter(employee -> employee.getSalary()>7000).forEach(System.out::println);
        System.out.println();
//        limit(n) -截断流,使其元素不超过给定数量
        Stream< Employee > stream1 = list.stream();
        stream1.limit(3).forEach(System.out::println);
        System.out.println();
//        skip(n) -跳过元素,返回一个扔掉了前n个元素的流。若流中元素不足n个,则返回一个空流。与limit(n)互补。
        Stream< Employee > stream2 = list.stream();
        stream2.skip(9).forEach(System.out::println);
        System.out.println();
//        distinct()-筛选,通过流所生成元素的hashCode()和equals() 去除重复元素
        list.add(new Employee(1010,"小凡",35,8000));
        list.add(new Employee(1010,"小凡",35,8000));
        list.add(new Employee(1010,"小凡",35,8000));
        list.add(new Employee(1010,"小凡",35,8000));
        System.out.println(list);
        System.out.println();
        list.stream().distinct().forEach(System.out::println);


    }
    //映射
    @Test
    public void test2(){
        //map(Function f) -接受一个函数作为参数,将元素转换成其他形式或提取信息,该函数会被被应用到每一个元素上,并将其映射成一个新的元素
        List< String > list = Arrays.asList("aa", "bb", "cc", "dd");
        list.stream().map(str ->str.toUpperCase()).forEach(System.out::println);
        //练习:获取员工姓名的长度大于3的员工姓名
        List< Employee > list1 = EmployeeData.getEmployees();
        Stream< String > stream = list1.stream().map(Employee::getName);
        stream.filter(name ->name.length()>3).forEach(System.out::println);
        //flatMap(Function f) - 接收一个函数作为参数,将流中的每个值都换成另外一个流,然后把所有的流连成一个流



    }
    //排序
    @Test
    public void test3(){
        //sort() -自然排序
        List list=Arrays.asList(12,45,78,96,41,11,5,6,7);
        list.stream().sorted().forEach(System.out::println);
        //抛异常。原有:Employee没有实现Comparable接口
//        List<Employee> list1=EmployeeData.getEmployees();
//        list1.stream().sorted().forEach(System.out::println);
        //sorted(Comparator com) -定制排序
        List<Employee> list1=EmployeeData.getEmployees();
        list1.stream().sorted((e1,e2)-> Integer.compare(e1.getAge(),e2.getAge())).forEach(System.out::println);
    }


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值