您现在的位置是:首页 >其他 >一句话设计模式11:过滤器模式网站首页其他
一句话设计模式11:过滤器模式
简介一句话设计模式11:过滤器模式
过滤器模式: 直接看 java8的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);
}
}
- 通过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 一次过滤得到两种集合,你学废了嘛?
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。