定义: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);