JDK8的lambda表达式

1 什么是lambda表达式?

Lambda表达式(也叫做闭包),是jdk8中的新语法,它允许我们将函数当成参数传递给某个方法或者将代码本身作为数据进行处理。

2 lambda表达式示例

2.1 用lambda表达式实现Runnable

//通过匿名内部类方法重写Runnable接口
new Thread(new Runnable() {
    @Override
    public void run() {
        System.out.println("通过匿名内部类方法重写Runnable接口");
    }
}).start();

//因为重写的方法是没有参数的所以在这个括号中什么都没有写
new Thread(() -> {
    //通过lambda表达式重写run方法的方法体
    System.out.println("通过lambda表达式重写run方法的内容");
}).start();

JDK8提供的几个内置函数式接口
Function 有入参 有返回值
Customer 有入参 没有返回值
Predicate 有入参 返回值为boolean
Supplier 没有入参 有返回值

/**
map的入参是function,有返回值,适用于我们修改集合元素的泛型 R apply(T t);
peek的入参是Consumer,没有返回值,适用于我们只是修改集合中元素的属性 accept(T t);
所以lambda表达式的匿名方法的格式是:
入参 -> {方法实现}  当没有入参时  使用()
*/

2.2 lambda表达式与Stream API的添加Predicate条件实现filter对集合进行过滤筛选遍历

//lambda表达式 与 Predicate接口进行筛选
List names = new ArrayList<String>();
names.add("xiaoming");
names.add("lilei");
names.add("hanmeimei");
names.add("xuzhouzhou");
names.add("linyang");
names.add("jingqiu");
names.add("laosan");
names.add("shenjiayi");
names.add("kejingteng");
names.add("linzhenxin");
names.add("xutaiyu");
/*添加筛选条件*/
Predicate<String> predicate1 = (n) -> n.contains("l");
Predicate<String> predicate2 = (n) -> n.length() > 4;
/*通过流API进行过滤并遍历结果集
  在这里两个predicate条件之间有and()与or()两种条件
*/
names.stream().filter(predicate1.or(predicate2)).forEach(n -> {
    System.out.println(n);
});

注意:在lambda表达式中引用的变量是不能进行修改的,也就是在lambda表达式中引用的变量是默认final修饰的。
lambda

遍历demo代码

  • sort 无返回值,在自身上排序
  • map 将数据处理后使用返回值替代
  • filter 将数据进行条件筛选
  • collection 将结果生成新的结果返回
public static void main(String[] args) {
        List<String> list = new ArrayList<>();

        list.add("4123q");
        list.add("3dcsd");
        list.add("adsfasq");
        list.sort((one, two)->one.compareTo(two));
        List<String> result = list.stream().filter(item -> item.contains("q")).map(data -> {
            return data + data;
        }).collect(Collectors.toList());

        System.out.println(result);
    }
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值