您现在的位置是:首页 >其他 >一句话设计模式11:过滤器模式网站首页其他

一句话设计模式11:过滤器模式

寂寞旅行 2023-05-26 20:00:04
简介一句话设计模式11:过滤器模式

过滤器模式: 直接看 java8的filter;



前言

过滤器模式一般使用场景是: 过滤集合中的不同元素的一种手段,其实平时开发中你经常用,但是你不知道而已;(心里话: 这也算一种设计模式?)


一、过滤器模式的作用

将混杂在一起的数据分门别类的过滤出来,分出各自的领域集合;

二、如何实现过滤器模式

直接上代码

  1. 从一个集合中找到自己想要的一个元素
public class TestFilter {

    public static void main(String[] args) {

        Integer[] integers = {1, 2, 3, 4, 5, 6, 7,8};

        Integer res = Arrays.stream(integers).filter(integer -> integer == 3).findFirst().orElse(0);

        System.out.println(res);

    }
}

找到其中一个元素

  1. 通过filter 过滤出两种集合
public class TestFilter {

    public static void main(String[] args) {

        Integer[] integers = {1, 2, 3, 4, 5, 6, 7,8};

        //Integer res = Arrays.stream(integers).filter(integer -> integer == 3).findFirst().orElse(0);
        //System.out.println(res);

        Collector<Integer, ?, Map<Boolean, List<Integer>>> filterCondition = Collectors.partitioningBy(num -> num > 3);

        Map<Boolean, List<Integer>> collect = Arrays.stream(integers).collect(filterCondition);

        System.out.println(JSONUtil.toJsonStr(collect.get(Boolean.TRUE)));
        System.out.println(JSONUtil.toJsonStr(collect.get(Boolean.FALSE)));

    }
}

大于3的为一个集合,小于3 的为一个集合
两种集合结果

总结

其实过滤器模式,对于java8 出现之前来说,可能还有点作用,也就是需要内部封装或者方法封装等,做一个集合过滤,但是现在有了java8 就基本完全解决了日常中的数据过滤问题;
本文中是用的基本类型举例,其实对象类型使用跟这个也是大同小异;

  • 记得对象比较的时候,要实现 equals 和 hashcode 哦
  • 利用stream 一次过滤得到两种集合,你学废了嘛?
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。