zoukankan      html  css  js  c++  java
  • Java8 新特性 Stream Api 之集合遍历

    新特性#

    比较新的的特性就是流Stream ,和lambda表达式

    图上面就是一些常用的方法,延迟方法,就是对数据作处理中间方法,终结方法就是最后符合好处理的数据结束方法

    延迟方法和lambda表达式的延迟加载的原理一样,它可以进行链式编程如list.().filter().map().limit(),可以一直点下去最后一步由方法为count或者foreach加载数据

    stream集合遍历forEach#

    遍历list直接list.stream().forEach进行遍历

    List<String> a=new ArrayList<>();
    
    a.add("judy");
    
    a.add("Tom");
    
    //lambda表达式
    
    a.stream().forEach(s -> System.out.println(s));
    
    
    
    a.stream().forEach(s -> {
    
        System.out.println(s);
    
        System.out.println(2);
    
    });

    集合复杂对象遍历

    Student student = new Student();
    
    student.setAddress("上海市黄浦区陆家浜路");
    
    student.setName("judy");
    
    student.setAge(26);
    
    List<Student> students = new ArrayList<>();
    
    students.add(student);
    
    
    //lambda表达式
    
    students.stream().forEach(student1 -> System.out.println(student1.name));
    
    
    
    students.stream().forEach(student1 -> {
    
        System.out.println(student1.name);
    
        System.out.println(student1.age);
    
        System.out.println(student1.address);
    
    });

    stream条件过滤filter#

    使用list.stream().filter()进行过滤条件,为true 条件成立才会执行下面语句

    List<String> a = new ArrayList<>();
    
    a.add("judy");
    
    a.add("Tom");
    
    a.add("   ");
    
    //lambda表达式  是judy才打印
    
    a.stream().filter(s -> s.equals("judy")).forEach(s -> System.out.println(s));
    
    // 不是空才打印
    
    a.stream().filter(s -> !s.isEmpty()).forEach(s -> System.out.println(s));

    复杂对象多条件判断过滤

    Student student = new Student();
    
    student.setAddress("上海市黄浦区陆家浜路");
    
    student.setName("judy");
    
    student.setAge(26);
    
    List<Student> students = new ArrayList<>();
    
    students.add(student);
    
    
    //lambda表达式  学生年纪大于28才打印
    
    students.stream().filter(student1 -> student1.getAge()>28).forEach(student1 -> System.out.println(student1.name));
    
    
    //多个条件过滤,同时成立 学生姓名是以张开头,并且长度等于3 ,lambda表达式 打印
    
    students.stream().filter(s->s.getName().startsWith("张")).filter(s-> s.getName().length() == 3).forEach(System.out::println);
    
    
    students.stream().forEach(student1 -> {
    
        System.out.println(student1.name);
    
        System.out.println(student1.age);
    
        System.out.println(student1.address);
    
    });

    https://www.cnblogs.com/kenx/p/15138599.html

    故乡明
  • 相关阅读:
    《Java数据结构与算法》笔记CH43用栈实现分隔符匹配
    《Java数据结构与算法》笔记CH2无序数组
    《Java数据结构与算法》笔记CH3简单排序
    《Java数据结构与算法》笔记CH41栈的实现
    《Java数据结构与算法》笔记CH42用栈实现字符串反转
    java流程控制.3循环结构
    java方法.1方法的定义和调用
    java流程控制.1scanner
    java方法.2方法的重载
    java方法.3递归
  • 原文地址:https://www.cnblogs.com/luweiweicode/p/15143134.html
Copyright © 2011-2022 走看看