java

lambda表达式的常见应用场景

2020-06-25  本文已影响0人  修行者12138

筛选出符合条件的元素

    private void test1() {
        List<Integer> list = new ArrayList<>(Arrays.asList(1, 2, 3));
        List<Integer> collect = list.stream().filter(num -> num > 1).collect(Collectors.toList());
        System.out.println(collect);
    }

输出
[2, 3]

筛选出实体类的某个属性

    private void test2() {
        List<StudentDO> list = new ArrayList<>(Arrays.asList(new StudentDO("张三"), new StudentDO("李四")));
        List<String> collect = list.stream().map(StudentDO::getName).collect(Collectors.toList());
        System.out.println(collect);
    }

输出
[张三, 李四]

筛选出list1中有,list2中没有的元素

    private void test3() {
        List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
        List<Integer> collect = list1.stream().filter(num1 -> list2.stream().noneMatch(num2 -> Objects.equals(num1, num2)))
                .collect(Collectors.toList());
        System.out.println(collect);
    }

输出
[1, 2, 3]

筛选出list1、list2都有的元素

    private void test4() {
        List<Integer> list1 = new ArrayList<>(Arrays.asList(1, 2, 3, 4, 5));
        List<Integer> list2 = new ArrayList<>(Arrays.asList(4, 5, 6));
        List<Integer> collect = list1.stream().filter(num1 -> list2.stream().anyMatch(num2 -> Objects.equals(num1, num2)))
                .collect(Collectors.toList());
        System.out.println(collect);
    }

输出
[4, 5]

把实体类的两个属性筛选出来组成map

    private void test5() {
        List<StudentDO> list = new ArrayList<>(Arrays.asList(new StudentDO(1, "张三"), new StudentDO(2, "李四")));
        Map<Integer, String> map = list.stream().collect(Collectors.toMap(StudentDO::getId, StudentDO::getName));
        System.out.println(map);
    }

输出
{1=张三, 2=李四}

对实体类的某一字段求和

    private void test6() {
        List<StudentDO> list = new ArrayList<>(Arrays.asList(new StudentDO(1, "张三"), new StudentDO(2, "李四")));
        int sum = list.stream().mapToInt(StudentDO::getId).sum();
        System.out.println(sum);
    }

输出
3

Arrays.stream可以对基本类型数组做流式操作,如对基本类型数组求和

    public void test8() {
        int[] arr = new int[]{1, 2, 3, 4};
        int sum = Arrays.stream(arr).sum();
        System.out.println(sum);
    }

输出
10

对基本类型数组装箱

    public void test7() {
        int[] arr = new int[]{1, 2, 3, 4};
        List list = Arrays.stream(arr).boxed().collect(Collectors.toList());
        System.out.println(list);
    }

输出
[1, 2, 3, 4]

对int数组求和

    public void test8() {
        int[] arr = new int[]{1, 2, 3, 4};
        System.out.println(Arrays.stream(arr).sum());
    }

未完待续...

上一篇 下一篇

猜你喜欢

热点阅读