Java JDK 1.8 lambda的用法详解
作者:kron_no 时间:2022-01-15 04:09:48
具体代码如下所示:
public class Student {
private String id;
private String name;
private String age;
private String address;
public Student(String id, String name, String age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", age='" + age + '\'' +
", address='" + address + '\'' +
'}';
}
}
public class TestStrean {
public static void main(String[] args){
Student stuA = new Student("1", "A", "M", "184");
Student stuB = new Student("2", "B", "G", "163");
Student stuC = new Student("3", "C", "M", "175");
Student stuD = new Student("4", "D", "G", "158");
Student stuE = new Student("5", "E", "M", "175");
List<Student> list = new ArrayList<>();
list.add(stuA);
list.add(stuB);
list.add(stuC);
list.add(stuD);
list.add(stuE);
/*-----------forEach-----------------------*/
// list.forEach(item -> item.setId(item.getAddress()+"test") );
/*-----------filter-----------------------*/
// List<Student> newList=list.stream().filter(item -> item.getAge().contains("G")).collect(Collectors.toList());
/*-----------filter的复杂应用-----------------------*/
// list.stream().filter(new Predicate<Student>(){
//
// @Override
// public boolean test(Student student) {
// if(student.getName() !=null){
// return student.getName().contains("30");
// }else{
// return true;
// }
// }
// }).collect(Collectors.toList());
/*-----------分页-----------------------*/
// List<Student> newList=list.stream().skip(4).limit(3).collect(Collectors.toList());
/*-----------map 返回一个新的list<Object>-----------------------*/
// List<Student> newList=list.stream().map(item ->{
// return new Student(
// item.getAddress(),
// item.getAge(),
// item.getName(),
// item.getId()
// );
// }).collect(Collectors.toList());
/*-----------map 返回一个原来的的list<Student>并赋值-----------------------*/
// List<Student> newList=list.stream().map(item ->{
// item.setId("1");
// return item;
// }).collect(Collectors.toList());
/*-----------flatMap-----------------------*/
// List<Student> newList= list.stream().flatMap(item ->{
// String[] split =item.getAddress().split("");
// String[] s2 = (String[]) Arrays.stream(split).filter(s -> s.contains("1")).toArray();
// return s2;
// });
/*-----------sorted compareTo排序-----------------------*/
// List<Student> newList=list.stream().sorted((o1,o2)->{
// if(o1.getAddress().equals(o2.getAddress())){
// return Integer.parseInt(o1.getId())-Integer.parseInt(o2.getId());
// }else{
// return o1.getAddress().compareTo(o2.getAddress());
// }
// }).collect(Collectors.toList());
/*-----------sorted Comparator排序-----------------------*/
// List<Student> newList=list.stream().sorted(
// Comparator.comparing(Student::getAddress).reversed()
// ).collect(Collectors.toList());
/*-----------sorted3 多条件排序-----------------------*/
// List<Student> newList=list.stream().sorted(
// Comparator.comparing(Student::getAddress).thenComparing(Comparator.comparing(Student::getId).reversed())
// ).collect(Collectors.toList());
// boolean b=list.stream().anyMatch(item -> item.getAge().contains("G"));
// System.out.println(b);
/*-----------Collector tomap----------------------*/
// Map<String, String> newList=list.stream().sorted(
// Comparator.comparing(Student::getAddress).thenComparing(Comparator.comparing(Student::getId).reversed())
// ).collect(Collectors.toMap(Student::getId,Student::getAddress));
/*-----------Collector groupingBy----------------------*/
Map<String, List<Student>> ageMap = list.stream().collect(Collectors.groupingBy(Student::getAddress));
System.out.println(ageMap );
}
}
知识点扩展:
jdk 1.8 Lambda 表达式 遍历数组
Lambda 表达式可以把回调函数作为参数传递
常用的遍历数组的方式如下
List<String> datas = new ArrayList<>();
//遍历
datas.forEach(item->{
System.out.println(item);
});
说明:
item就是每次遍历的当前元素
总结
以上所述是小编给大家介绍的Java JDK 1.8 lambda的用法详解,网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!
来源:https://blog.csdn.net/kron_no/article/details/98642480
标签:JDK,1.8,lambda,用法
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
剖析Java中阻塞队列的实现原理及应用场景
2023-09-01 17:33:07
Spring在多线程下@Resource注入为null的问题
2022-09-11 07:41:18
java去除中文括号小括号,或者英文括号的实例代码
2023-02-12 20:34:54
实例详解Android自定义ProgressDialog进度条对话框的实现
2023-02-18 08:32:40
![](https://img.aspxhome.com/file/2023/9/94999_0s.jpg)
SpringBoot微信消息接口配置详解
2023-08-23 09:51:21
![](https://img.aspxhome.com/file/2023/2/58422_0s.jpg)
Android WorkManager使用以及源码分析
2022-02-04 01:10:26
![](https://img.aspxhome.com/file/2023/4/89554_0s.jpg)
在C#中捕获内存不足异常
2021-07-14 11:50:46
C#编程实现获取文件夹中所有文件的文件名
2022-11-16 07:53:10
GraalVM native-image编译后quarkus的超音速启动
2022-08-09 01:17:27
![](https://img.aspxhome.com/file/2023/1/122331_0s.png)
深入理解MyBatis中的一级缓存与二级缓存
2022-05-25 09:41:34
![](https://img.aspxhome.com/file/2023/7/66057_0s.png)
解决springcloud中Feign导入依赖为unknow的情况
2022-02-03 14:05:45
Java实现三子棋小游戏
2022-09-12 01:27:20
java实现数字转大写的方法
2021-11-04 21:39:45
Android实现将一个Activity设置成窗口样式的方法
2023-07-04 18:56:38
![](https://img.aspxhome.com/file/2023/5/122215_0s.jpg)
SpringBoot 配置文件总结
2021-09-06 13:12:57
![](https://img.aspxhome.com/file/2023/3/59343_0s.webp)
java开发ServiceLoader实现机制及SPI应用
2022-12-24 09:55:05
![](https://img.aspxhome.com/file/2023/8/69728_0s.png)
Java简单高效实现分页功能
2022-05-24 13:56:02
java读写二进制文件的解决方法
2022-08-03 14:45:55
Eclipse快速添加get、set方法的操作技巧
2022-11-20 04:11:59
![](https://img.aspxhome.com/file/2023/7/78937_0s.jpg)
java集合继承关系图分享
2023-04-25 17:17:23
![](https://img.aspxhome.com/file/2023/0/67480_0s.png)