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,用法
0
投稿

猜你喜欢

  • 剖析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
  • SpringBoot微信消息接口配置详解

    2023-08-23 09:51:21
  • Android WorkManager使用以及源码分析

    2022-02-04 01:10:26
  • 在C#中捕获内存不足异常

    2021-07-14 11:50:46
  • C#编程实现获取文件夹中所有文件的文件名

    2022-11-16 07:53:10
  • GraalVM native-image编译后quarkus的超音速启动

    2022-08-09 01:17:27
  • 深入理解MyBatis中的一级缓存与二级缓存

    2022-05-25 09:41:34
  • 解决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
  • SpringBoot 配置文件总结

    2021-09-06 13:12:57
  • java开发ServiceLoader实现机制及SPI应用

    2022-12-24 09:55:05
  • Java简单高效实现分页功能

    2022-05-24 13:56:02
  • java读写二进制文件的解决方法

    2022-08-03 14:45:55
  • Eclipse快速添加get、set方法的操作技巧

    2022-11-20 04:11:59
  • java集合继承关系图分享

    2023-04-25 17:17:23
  • asp之家 软件编程 m.aspxhome.com