栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Lamada表达式 Java8新特性详解

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Lamada表达式 Java8新特性详解

Lamada表达式 Java8新特性详解
  • Lamada表达式 Java8新特性详解
  • 1.介绍
    • 1.1什么是lamada表达式
    • 1.2语法格式
  • 2.相关注意事项
    • 2.1匿名内部类的注意事项
    • 2.2省略注意
  • 3.常用的接口使用lambda表达式
  • 4.手写一个接口Inner1来实现lamda表达式
  • 5.代码示例

Lamada表达式 Java8新特性详解 1.介绍 1.1什么是lamada表达式

lambda表达式代替了匿名内部类的写法, Java8之后的新特性

参数、返回值类型和要实现的接口的方法参数、返回值类型对应,语句表达式就是方法体

1.2语法格式

格式:()->{} 、()-返回值

圆括号里放的是接口唯一方法的参数,大括号放的是表达式,后面或者是放的return语句的返回值

2.相关注意事项 2.1匿名内部类的注意事项

匿名内部类的简写方式
1、实现某个接口
2、该接口中仅有 一个 抽象方法
3、抽象类不能使用Lambda表达式

2.2省略注意

​ 1、参数类型可以省略
​ 2、当方法中只有一行代码时,大括号可以省略
​ 3、当方法中只有一行代码时,return关键字可以省略(大括号也要省)
​ 4、当方法的参数列表中只有一个参数时,小括号可以省略
​ 5、当方法的参数列表中没有参数时,小括号不能省略

3.常用的接口使用lambda表达式
接口方法参数返回值作用使用场景
Predicatetest(Object o)Object oboolean过滤规则在list中使用removeIf()方法,过滤文件的操作listfiles()方法
UnaryOperaterapply(Object o)Object oObject替代规则list集合中replaceAll()方法中使用
Comparatorcompare(Object o1,Object o2)Object o1,Object o2int排序规则配合list.sort()方者Collections.sort中排序使用
Filefilteraccpt(File pathname)File pathnameboolean文件过滤在过滤文件的时候使用
ComparablecompareTo(Object o)Object oint排序规则在排序的时候使用
BiConsumeraccept(K k,V v)K k,V vvoid遍历map集合在遍历map的时候使用
BiFunctionapply(K k,V v)K k,V vvoid元素替代在map集合中的replaceAll()方法中使用
Consumeraccept(T t)T tvoid消费性接口
Functionapply(T t)T tR函数型接口对类型为T的对象进行操作 R apply(T t)
4.手写一个接口Inner1来实现lamda表达式

()->{}:该匿名方法用于重写Inner中的抽象方法test

public class Demo2 {
    public static void main(String[] args) {
        Inner1 i1 = () -> {
            System.out.println("test1");
        };
        i1.test1(); //调用方法
		//计算1+2
        Inner2 i2 = (a,b) -> {
            System.out.println(a + b);
        };
        i2.test2(1,2);
    }
}

interface Inner1 {
    //无参数
    void test1();
}

interface Inner2 {
    void test2(int a, int b);
}

结果展示:

Lamada表达式 Java8新特性详解

5.代码示例

使用一个集合实现排序,替换,删除过滤

import java.util.ArrayList;
import java.util.List;


public class Demo3 {
    public static void main(String[] args) {
        //得到一个集合并输出
        System.out.println("原集合:");
        List list = getList();
        //将数字进行排序
        System.out.println("排序后的结果:");
        sortNumber(list);
        //替换小于20的数为0
        System.out.println("替换后的结果:");
        System.out.println(replaceNumber(list));
        //得到一个大于50的数字的集合
        System.out.println("大于50的数字:");
        List list1 = filterNumber(list);
        System.out.println(list1);
        //替代指定的元素

    }

    
    private static List getList() {
    List list = new ArrayList<>();
        list.add(1);
        list.add(100);
        list.add(34);
        list.add(-1);
        list.add(4);
        list.add(95);
        System.out.println(list);
        return list;
    }

    
    private static List replaceNumber(List list){
        //第一种方式,使用内部类:
//        list.replaceAll(new UnaryOperator() {
//            @Override
//            public Integer apply(Integer integer) {
//                if (integer < 20) {
//                    return 0;
//                }
//                return integer;
//            }
//        });
        //第二种方式:使用lambda表达式:
        list.replaceAll(integer -> {
            if (integer < 20) {
                return 0;
            }
            return integer;
        });
        return list;
    }
    
    private static void sortNumber(List list){
        //第一种方式,使用内部类
//        list.sort(new Comparator() {
//            @Override
//            public int compare(Integer o1, Integer o2) {
//                if(o1>o2){
//                    return -1;
//                }
//                return 1;
//            }
//        });
        //第二种使用lambda表达式
        list.sort((o1, o2) -> {
            if(o1>o2){
                return 1;
            }
            return -1;
        });
        System.out.println(list);
    }
    
    private static List filterNumber(List list) {
        //第一种方式,实现内部类
//        list.removeIf(new Predicate() {
//            @Override
//            public boolean test(Integer integer) {
//                return integer>=50;
//            }
//        });
        //第二种方式 使用lambda表达式
        list.removeIf(integer -> integer<=50);
        return list;
    }

}

结果展示:

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/631117.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号