Java JDK 1.8 lambda的用法详解
作者:kron_no 发布时间:2022-01-15 04:09:48
标签:JDK,1.8,lambda,用法
具体代码如下所示:
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
0
投稿
猜你喜欢
- 一、问题描述Android应用程序的四大组件中Activity、BroadcastReceiver、ContentProvider、Serv
- JDK8已发布,写了一个datetime时间函数使用方法的小示例package datetime;import static java.ti
- 表单的重复提交: 没有完整的进行一次,先请求表单页面->再提交表单过程而完成数据提交造成的根本原因: 没有完整的进行一次,先请求表单页
- 简介简单的文本编译器,可以通过弹出对话框打开文件,进行编写并保存文件。代码package Code.a;import java.io.*;i
- 随着C语言的学习慢慢结束,博主也要开始学习一门新语言了,那就是java。所以博主将会开启一个新的关于java的专栏,所以想要慢慢和我一起学习
- java arrayList遍历的四种方法及Java中ArrayList类的用法package com.test;import java.u
- 前言 在软件开发中,我们通常会遇到一种场景,比如某个请求,会依次经过系统中的很多个模块来处理,如果某个模
- 1、public String(char[] c,begin,length).从字符数组c的下标begin处开始,将长度为length的字符
- 本文实例讲述了Java基于JDBC实现事务,银行转账及货物进出库功能。分享给大家供大家参考,具体如下:1. 转账业务转账必须执行2个sql语
- 环境: VS2019 , OpencvSharp4 4.5.5.20211231 , .NET Framework 4.8界面设计:图像显示
- 😎 先看效果一人分饰多角(bushi)😏 后端代码🍗 先引入websocket依赖<!-- websocket消息推送 -->&
- 双向链表(Doubly linked list)什么是双向链表?双向链表也叫双链表,是链表的一种,它的每个数据结点中都有两个指针,分别指向直
- Contact联系人对Mms来说是十分重要的,因为每一个对话的收信人都是一个联系人,新建信息时可以输入联系人的任何信息,比如号码或名字,Mm
- 首先备注一下JAR(Java Archive,Java 归档文件)是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件。为 J2EE
- 前言OpenCVSharp是OpenCV的.NET wrapper,是一名日本工程师开发的,项目地址为:https://github.com
- 一、前言前面我们学习了多态中的转型,那么现在我们开始学习抽象类的概述和使用二、抽象类生活大多事物是具有抽象含义的,比如我说一个生物,你想不到
- 本文实例讲述了C#使用linq语句查询数组中以特定字符开头元素的方法。分享给大家供大家参考。具体如下:下面的代码查询数组中以字母k开头的元素
- 1.配置自定义共享线程池(Spring线程池)@Configuration@EnableAsyncpublic class ThreadPo
- #简易版1、客户发送请求经过 DisPatcherServlet 核心过滤器2、DisPatcherServlet 核心控制器在去找一个或多
- 本文以实例详细分析了Java中重载与重写的区别,感兴趣的朋友可以参考一下。一、重载(Overloading):(1) 方法重载是让类以统一的