Java JDK 1.8 lambda的用法详解

 更新时间:2019年09月06日 09:29:34   作者:kron_no  
这篇文章主要介绍了Java JDK 1.8 lambda的用法详解,文中给大家提到了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的用法详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对脚本之家网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

相关文章

  • java实现实时通信聊天程序

    java实现实时通信聊天程序

    这篇文章主要为大家详细介绍了java实现实时通信聊天程序,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-06-06
  • SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案

    SpringBoot使用Maven打包异常-引入外部jar的问题及解决方案

    这篇文章主要介绍了SpringBoot使用Maven打包异常-引入外部jar,需要的朋友可以参考下
    2020-06-06
  • 一篇文章带你玩转Spring bean的终极利器

    一篇文章带你玩转Spring bean的终极利器

    这篇文章主要给大家介绍了关于玩转Spring bean的终极利器的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用spring bean具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-05-05
  • Java EventBus手把手带你实现

    Java EventBus手把手带你实现

    EventBus是Guava的事件处理机制,是设计模式中观察者模式(生产/消费者编程模型)的优雅实现。本文就来和大家聊聊EventBus的使用,需要的可以参考一下
    2023-01-01
  • Java中注解@Async实现异步及导致失效原因分析

    Java中注解@Async实现异步及导致失效原因分析

    Async注解用于声明一个方法是异步的,当在方法上加上这个注解时将会在一个新的线程中执行该方法,而不会阻塞原始线程,这篇文章主要给大家介绍了关于Java中注解@Async实现异步及导致失效原因分析的相关资料,需要的朋友可以参考下
    2024-07-07
  • 基于Java代码操作Redis过程详解

    基于Java代码操作Redis过程详解

    这篇文章主要介绍了基于Java代码操作Redis过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-10-10
  • java对接微信支付SDK接口简单图文教程

    java对接微信支付SDK接口简单图文教程

    在微信支付接口对接过程中,开发者需准备多项关键参数,如开发者ID(appid)、商户号等,并完成相关注册与认证流程,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2024-11-11
  • FF浏览器和IE下载文件乱码问题的解决方法

    FF浏览器和IE下载文件乱码问题的解决方法

    大家可以看到如下截图,下载文件出现了乱码,在其他浏览器(IE,Chrome....)上没有出现这个问题,解决方法很简单,遇到类似问题的朋友可以了解下哦
    2013-08-08
  • Spring Boot 自动配置之条件注解浅析

    Spring Boot 自动配置之条件注解浅析

    这篇文章主要介绍了Spring Boot 自动配置之条件注解浅析,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2019-02-02
  • java LeetCode题解KMP算法示例

    java LeetCode题解KMP算法示例

    这篇文章主要为大家介绍了java LeetCode题解KMP算法示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-10-10

最新评论