Lamdba表达式(五)--中间操作

本文档介绍了如何在Java中使用Stream API进行中间操作,包括筛选员工薪资、转换字符串大小写、定制排序等。通过EmployeeData类实例演示了filter、map和sorted方法的实际应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Stream的中间化操作有 ①筛选和切片 ② 映射 ③排序        

注:EmployeeData类的内容参考L:Lamdba表达式(三)—方法引用&构造器引用&数组引用_云集千祥的博客-优快云博客

package lamdba;

import org.junit.jupiter.api.Test;

import java.util.Arrays;
import java.util.List;
import java.util.stream.Stream;

/**
 * 测试Stream的中间操作
 */
public class StreamAPTTest1 {

    //刷选与切片
    @Test
    public  void  test1(){
        List<Employee> list= EmployeeData.getEmployee();
        //filter(Predicate p) 接受lamdba,从流中排除某些元素
        // 查询工资大于7000的员工
        list.stream().filter(e-> e.getSalary()>7000).forEach(System.out::println);
        //list.stream().filter(e->e.getName().contains("马")).forEach(System.out::println);
        System.out.println();
        //limit(n) --截断流 ,使其元素不超过给定数量
        list.stream().limit(1).forEach(System.out::println);

        System.out.println();
        //skip(n) -- 跳过元素, 返回一个扔掉前n个元素的流,若流中元素不足n个,则返回一个空流,与limit(n)互补
        list.stream().skip(3).forEach(System.out::println); // 挑过前3个元素

        System.out.println();
        //distinct()筛选,通过流所生成的元素的hashcode()和equals()去除重复数据
        list.add(new Employee(1009,"dream",25,9999.0));
        list.add(new Employee(1009,"dream",25,9999.0));
        list.add(new Employee(1009,"dream",25,9999.0));
        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> employees = EmployeeData.getEmployee();
        Stream<String> namesStream=employees.stream().map(Employee::getName);
        namesStream.filter(name -> name.length()>3).forEach(System.out::println);
         
    }
    //3.排序
    @Test
    public  void test4(){
        //sorted() -- 自然排序
        List<Integer> list=Arrays.asList(12,15,36,94,-8,2,659,9,51);
        list.stream().sorted().forEach(System.out::println);
        //sorted(Comparator com) 定制排序
        List<Employee> employee = EmployeeData.getEmployee();
        employee.stream().sorted((e1,e2)->{
           int ageValue=Integer.compare(e1.getAge(),e2.getAge()) ;
           if (ageValue !=0){
               return  ageValue;
           }else {
               return  Double.compare(e1.getSalary(),e2.getSalary());
           }
        }).forEach(System.out::println);
    }






























}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值