Java集合中filter的使用,保留集合中符合条件的元素

Posted 默慊$

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java集合中filter的使用,保留集合中符合条件的元素相关的知识,希望对你有一定的参考价值。

之前的Java集合中removeIf的使用,过滤集合中符合条件的元素的使用一文写了使用removeIf来实现按条件对集合进行过滤。这篇文章使用同样是JDK1.8新加入的Streamfilter方法来实现同样的效果。并且在实际项目中通常使用filter更多。关于Stream的详细介绍参见Java 8系列之Stream的基本语法详解
同样的场景:你是公司某个岗位的HR,收到了大量的简历,为了节约时间,现需按照一点规则过滤一下这些简历。比如要经常熬夜加班,所以只招收男性

//求职者的实体类
public class Person {
    private String name;//姓名
    private Integer age;//年龄
    private String gender;//性别

    ...
    //省略构造方法和getter、setter方法
    ...

    //重写toString,方便观看结果
    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\\'' +
                ", age=" + age +
                ", gender='" + gender + '\\'' +
                '}';
    }
}

我们使用lambda表达式和filter来实现保留符合条件的元素

Collection<Person> collection = new ArrayList();
collection.add(new Person("张三", 22, "男"));
collection.add(new Person("李四", 19, "女"));
collection.add(new Person("王五", 34, "男"));
collection.add(new Person("赵六", 30, "男"));
collection.add(new Person("田七", 25, "女"));

Stream<Person> personStream = collection.stream().filter(
        person -> "男".equals(person.getGender())//只保留男性
);

collection = personStream.collect(Collectors.toList());//将Stream转化为List
System.out.println(collection.toString());//查看结果

    removeIffilter使用方法差不多,但是还是有些区别的,使用者我们要特别注意:

  • removeIf符合条件的元素会被过滤掉
  • filter符合条件的元素会保留下来

以上是关于Java集合中filter的使用,保留集合中符合条件的元素的主要内容,如果未能解决你的问题,请参考以下文章

PHP使用array_filter查找二维数组中符合字段和字段值的数据集合

java 8 List Filter

在 Array.filter 中正确使用 Async

nodejs Async详解之三:集合操作

java集合-Java8新增的Predicate操作集合

Java集合中removeIf的使用,过滤集合中符合条件的元素