Lambda初探

定义:Lambda就是简化了匿名内部类。
本文部分内容转载自Jason.Tang的博客。
https://blog.csdn.net/qq_34382367/article/details/86624085

整体代码:

import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import java.util.stream.Collectors;

public class test {

    public static void main(String arg[]){

        Client a1 = new Client();
        a1.setUserName("sssss");

        Client a2 = new Client();
        a2.setUserName("DLX blogs");

        Client a3 = new Client();
        a3.setUserName("qqqqqqq");

        ArrayList<Client> AList = new ArrayList<>();
        AList.add(a1);
        AList.add(a2);
        AList.add(a3);

        //返回一个对象
        Optional<Client> firstA = AList.stream().filter(b -> "DLX blogs".equals(b.getUserName())).findFirst();
        if(firstA.isPresent()){  //isPresent是否存在
            Client a = firstA.get();
            System.out.println(a.getUserName());
        }else{
            System.out.println("Client对象不存在");
        }

        //返回一个集合
        List<Client> topA = AList.stream().filter(b -> "DLX blogs".equals(b.getUserName())).collect(Collectors.toList());
        //抽取对象中所有userName的名称
        List<String> userNameList = AList.stream().map(Client::getUserName).collect(Collectors.toList()); //A::getUserName 简写前:a -> a.getId
        if(userNameList.size()>0){
//            userNameList.stream().forEach(userName -> System.out.println(userNameList));
        }
    }
}

1.首先创建一个对象Client.java

public class Client {
    private String id;
    private String userName;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getUserName() {
        return userName;
    }

    public void setUserName(String userName) {
        this.userName = userName;
    }
}

2.创建一个测试类test.java。

3.创建若干个对象,一个List集合,并把对象add进List集合中。

Client a1 = new Client();
a1.setUserName("sssss");

Client a2 = new Client();
a2.setUserName("DLX blogs");

Client a3 = new Client();
a3.setUserName("qqqqqqq");

ArrayList<Client> AList = new ArrayList<>();
AList.add(a1);
AList.add(a2);
AList.add(a3);

4.利用lambda表达式返回一个对象。

//返回一个对象
Optional<Client> firstA = AList.stream().filter(b -> "DLX blogs".equals(b.getUserName())).findFirst();
if(firstA.isPresent()){  //isPresent是否存在
    Client a = firstA.get();
    System.out.println(a.getUserName());
}else{
    System.out.println("Client对象不存在");
}

以上代码得到的结果:
在这里插入图片描述
解释:

Stream和管道的概念
  • Stream: Stream是一系列元素, 象生产线上的罐头, 一罐一罐的生产出来 管道: 是指一系列聚合操作。
  • 分为:管道源、中间操作、结束操作。
跟在.stream()后面对元素进行筛选的方法:
  • filter 匹配
  • distinct 去除重复(根据equals判断)
  • sorted 自然排序
  • sorted(Comparator) 指定排序
  • limit 保留
  • skip 忽略
转换为其他形式的流
  • mapToDouble 转换为double的流
  • map 转换为任意类型的流

5.利用Lambda表达式返回一个集合

//返回一个集合
List<Client> topA = AList.stream().filter(b -> "DLX blogs".equals(b.getUserName())).collect(Collectors.toList()); //b表示临时变量名 collect:将前一个filter过滤出来的元素,重新组成一个集合
//抽取对象中所有userName的名称
List<String> userNameList = AList.stream().map(Client::getUserName).collect(Collectors.toList()); //A::getUserName 简写前:a -> a.getId     .map:转换为任意类型的流 对应类型:stream<String>
if(userNameList.size()>0){
    userNameList.stream().forEach(userName -> System.out.println(userName));
    //可以简写为:
    userNameList.stream().forEach(System.out::println);
}

结果:
在这里插入图片描述

完结!
ps:

数组却没有stream()方法,需要使用:
 int[] arr = {1, 2, 3, 4};
 Arrays.stream(arr).forEach(System.out::println);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值