Lambda表达式的应用-创新互联

Lambda表达式的应用

调用Collection.sort()方法,通过定制排序比较两个Employee(先按年龄比,年龄相同按姓名比),使用Lambda作为参数传递
List employees = Arrays.asList(
            new Employee("张三", 18 ,9999.99),
            new Employee("李四", 50, 5555.99),
            new Employee("王五", 50, 6666.66),
            new Employee("赵六", 16, 3333.33),
            new Employee("田七", 8, 7777.77)
    );

    @Test
    public void test1(){
        Collections.sort(employees, (e1, e2) -> {
            if (e1.getAge() == e2.getAge()){
                return e1.getName().compareTo(e2.getName());
            }else {
                return Integer.compare(e1.getAge(), e2.getAge());
                //倒序排
                //return -Integer.compare(e1.getAge(), e2.getAge());
            }
        });

        for (Employee employee : employees){
            System.out.println(employee);
        }
    }
1. 声明函数式接口,接口中声明抽象方法,public String getValue(String str);
2. 声明类TestLambda,类中编写方法使用接口作为参数,将一个字符串转换为大写,并作为方法的返回值
3. 再将一个字符串的第2个和第4个索引位置进行截取子串
@FunctionalInterface
public interface MyFunction {

    public String getValue(String str);
}
List employees = Arrays.asList(
            new Employee("张三", 18 ,9999.99),
            new Employee("李四", 50, 5555.99),
            new Employee("王五", 50, 6666.66),
            new Employee("赵六", 16, 3333.33),
            new Employee("田七", 8, 7777.77)
    );

    //需求:用于处理字符串
    public String strHandler(String str, MyFunction mf){
        return mf.getValue(str);
    }

    @Test
    public void test2(){
        String trimStr = strHandler("abfdfdf", (str) -> str.toUpperCase());
        System.out.println(trimStr);

        String subStr = strHandler("abfdfdf", (str) -> str.substring(2, 4));
        System.out.println(subStr);

    }
1. 声明一个带两个泛型的函数式接口,泛型类型为 T为参数,R为返回值
2. 接口中声明对应抽象方法
3. 使用接口作为参数,计算两个long类型参数的和
4. 再计算两个long型参数的乘积
public interface MyFunction2 {

    public R getValue(T t1, T t2);
}
//需求:对于两个Long型数据进行处理
    public void op(Long l1, Long l2, MyFunction2 mf){
        System.out.println(mf.getValue(l1, l2));
    }

    @Test
    public void test3(){
        op(100L, 200L, (x, y) -> x + y);

        op(100L, 200L, (x, y) -> x * y);
    }

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。

站在用户的角度思考问题,与客户深入沟通,找到嘉荫网站设计与嘉荫网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:成都网站制作、网站建设、外贸网站建设、企业官网、英文网站、手机端网站、网站推广、申请域名网站空间、企业邮箱。业务覆盖嘉荫地区。
文章名称:Lambda表达式的应用-创新互联
URL地址:http://scyanting.com/article/dppgsh.html