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


猜你喜欢
- 方法一: IDictionaryEnumerator enumerator = thProduct.GetEn
- 只要了解过多线程,我们就知道线程开始的顺序跟执行的顺序是不一样的。如果只是创建三个线程然后执行,最后的执行顺序是不可预期的。这是因为在创建完
- 做tcp网络编程,要解析一批批的数据,可是数据是通过Socket连接的InputStream一次次读取的,读取到的不是需要转换的对象,而是要
- 本文实例为大家分享了Android检测手机多点触摸点数的具体代码,供大家参考,具体内容如下多点触摸点数效果图Circle.javapacka
- 在很多的Android项目中都需要用户登录、注册。这样的话在开发中做好保护用户密码的工作就显得尤为重要。这里我把自己的密码保护方法记录下来。
- Android语音合成与语音识别,供大家参考,具体内容如下这里调用科大讯飞语音的API,语音云开放平台介绍调用科大讯飞语音的API,需要加添
- 本文使用的Unicode+DLL+Debug的方式,因为不想最后生成的exe文件太大。环境搭建步骤如下:1、下载wxWidgets包:登录w
- 本文实例讲述了Android编程实现XML解析与保存的三种方法。分享给大家供大家参考,具体如下:简介在Android开发中,关于XML解析有
- 前言现在大部分App底部都有一个菜单,实现这个功能也有好多办法:- TabHost+Fragment - RadioGroup+Fragme
- 一.理论准备KMP算法为什么比传统的字符串匹配算法快?KMP算法是通过分析模式串,预先计算每个位置发生不匹配的时候,可以省去重新匹配的的字符
- 系列文章已完成,目录如下:jdk-logging log4j logback日志系统实现机制原理介绍commons-lo
- 一、首先我们先大致了解一下什么是多线程。(书上的解释)程序是一段静态的代码,它是应用软件的蓝本。进程是程序的一次动态执行过程,对
- 本文实例讲述了Java基于Runtime调用外部程序出现阻塞的解决方法, 是一个很实用的技巧。分享给大家供大家参考。具体分析如下:有时候在j
- 1 pom.xml文件注:热部署功能spring-boot-1.3开始有的<!--添加依赖--><dependency&g
- 序列化和反序列化的概念当我们在Java中创建对象的时候,对象会一直存在,直到程序终止时。但有时候可能存在一种"持久化"场
- 目录1、效果视频2、剖析Android坐标系3、实现方式3.1 layout3.2 scrollBy3.3 offsetLeftAndRig
- 1.创建列表(列表可以存储任何类型的数据,在创建列表对象的时候首先要指定你要创建的这个列表要存储什么类型的)(泛型)//创建列表  
- 前言Android12 有很多令人惊喜的变化,比如基于 Material You 的全新 UI,基于 SplashScreen 的应用启动画
- 文章按照 Socket 的 创建、连接、传输数据、释放资源的过程来写。给出方法、参数的详细信息。一,网络基础说到 Socket,需要学习一下
- 介绍:unity界面开发,会用到很多导航的按钮,他们是公共的,单击其中一个按钮,显示对应的界面。unity中,UGUI自带Toggle组件,