> 文章列表 > 一句话设计模式11:过滤器模式

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

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

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


文章目录

  • 过滤器模式: 直接看 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);}
}

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

  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 的为一个集合
一句话设计模式11:过滤器模式

总结

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

  • 记得对象比较的时候,要实现 equals 和 hashcode 哦
  • 利用stream 一次过滤得到两种集合,你学废了嘛?