Java8 集合 Stream的使用

Lambda

  • 基本使用实例
    1. () -> result 不需要参数,直接返回result
    2. x -> 2 * x 接收一个参数返回其2倍
    3. (x,y) -> x - y 接收两个参数并返回差值

list.stream.fiflter

  • 基本使用
    准备一个实例 EmployPojo

        public class EmployPojo {
            private String name;
            private String age;
            private String address;
        }
    ```java  
    具体使用:  
    ```java
        public static void main(String[] args) {
            List<EmployPojo> pojos = Lists.newArrayList();
            pojos.add(EmployPojo.builder().name("dong").age("25").address("china").build());
            pojos.add(EmployPojo.builder().name("xiao").age("26").address("china").build());
            pojos.add(EmployPojo.builder().name("hua").age("27").address("china").build());
            pojos.add(EmployPojo.builder().name("hua").age("3").address("china").build());
            pojos.add(EmployPojo.builder().name("dongxiaohua").age("28").address("china").build());
    
            List<String> argList = Lists.newArrayList("25", "9", "10");
    
            /**
             * 将符合表达式的第一个对象返回
             * Optional<EmployPojo> employPojo
             * employPojo.orElse(null);
             */
            Optional<EmployPojo> employPojo = pojos.stream().filter(pojo -> argList.contains(pojo.getAge())).findFirst();
            // 将符合表达式的所有对象返回
            List<EmployPojo> employPojos = pojos.stream().filter(pojo -> (argList.contains(pojo.getAge()) || "28".equals(pojo.getAge()))).collect(Collectors.toList());
    
            // 将符合表达式的所有对象只能够的指定字段返回
            List<String> names = pojos.stream().filter(pojo -> argList.contains(pojo.getAge())).map(EmployPojo::getName).collect(Collectors.toList());
            /**
             * 将list按照指定字段作为key,value转换成map
             * 其中(k1,k2)-> k2  表示当key重复的时候选择后者覆盖前者,或者例如下给定重新值
             */
            Map<String, String> map = pojos.stream().collect(
            Collectors.toMap(EmployPojo::getName, EmployPojo::getAge, (k1, k2) -> String.valueOf((Integer.valueOf(k1) + Integer.valueOf(k2)))));
        }
    ```java
    
    

详解