stream流使用filter函数避免使用==判断等值

参考

 @Data
    @AllArgsConstructor
    static class Person2{
        String name;
        Integer age;
    }

 List<Person2> list = new ArrayList<>();
        list.add(new Person2("1", 1000000001));
        list.add(new Person2("2", 1000000002));
        list.add(new Person2("3", 1000000003));
        list.add(new Person2("3", 4));
        Integer vv = 1000000003; // 这里如果是int vv . 那就可以用==
        Integer vv2 = 4;

        // 而Integer中-128到127之外的值都是引用对象,所以==号无法判断相等,导致filter过滤后的值都没能录入,这里应当使用equals判断。
//        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, vv);
        Collection<Person2> collect = list.stream().filter(u -> u.getAge() == vv2)
                .collect(Collectors.toList());

        System.out.println(collect);
评论