java8实战:filter的简单使用
《JAVA8实战》中的例子
要实现的功能:通过Apple的color或weight属性,对List<Apple>进行筛选。
1、首先定义com.owl.entity.Apple:
package com.owl.entity; public class Apple { private String color; private Integer weight; public String getColor() { return color; } public void setColor(String color) { this.color = color; } public Integer getWeight() { return weight; } public void setWeight(Integer weight) { this.weight = weight; } }
2、生成一个简单的List<Apple>集合
package com.owl.app; import java.util.ArrayList; import java.util.List; import com.owl.entity.Apple; public class demo { public static void main(String[] args) { List<Apple> appleList = new ArrayList<Apple>(); Apple redApple = new Apple(); redApple.setColor("red"); redApple.setWeight(180); appleList.add(redApple); Apple greenApple = new Apple(); greenApple.setColor("green"); greenApple.setWeight(120); appleList.add(greenApple); } }
3、在com.owl.entity.Apple中定义筛选条件(绿苹果或者重量大于150的苹果)
public static boolean isGreenApple(Apple apple) { return "green".equals(apple.getColor()); } public static boolean isHeavyApple(Apple apple) { return apple.getWeight() > 150; }
4、在com.owl.app.demo中定义接口:
public interface Predicate<T> { boolean test(T t); }
5、在com.owl.app.demo中定义filter方法:
static List<Apple> AppleFilter(List<Apple> apples, Predicate<Apple> p) { List<Apple> resultApples = new ArrayList<Apple>(); for (Apple apple:apples) { if(p.test(apple)) { resultApples.add(apple); } } return resultApples; }
6、在main函数中使用filter筛选苹果(需要定义行为类isGreenApple、isHeavyApple)
List<Apple> greenAppleSet = AppleFilter(appleList, Apple::isGreenApple); List<Apple> heavyAppleSet = AppleFilter(appleList, Apple::isHeavyApple); System.out.println("=======绿苹果======="); for (Apple apple:greenAppleSet) { System.out.println(apple.getColor()); } System.out.println("=======大苹果======="); for (Apple apple:heavyAppleSet) { System.out.println(apple.getWeight()); }
结果:
为了实现上述功能,除了需要定义筛选条件之外,仍需要定义Predicate<T>和AppleFilter方法未免太过麻烦,通过lambda表达式有更简单的写法:
List<Apple> greenAppleSet = appleList.stream().filter((Apple apple)->apple.getColor().equals("green")).collect(Collectors.toList());
List<Apple> heavyAppleSet = appleList.stream().filter((Apple apple)->apple.getWeight()>150).collect(Collectors.toList());
System.out.println("=======绿苹果=======");
for (Apple apple:greenAppleSet) {
System.out.println(apple.getColor());
}
System.out.println("=======大苹果=======");
for (Apple apple:heavyAppleSet) {
System.out.println(apple.getWeight());
}
涉及到较大的数据集的时候,可以采用并行处理的方式进行筛选:
List<Apple> greenAppleSet = appleList.parallelStream().filter((Apple apple)->apple.getColor().equals("green")).collect(Collectors.toList()); List<Apple> heavyAppleSet = appleList.parallelStream().filter((Apple apple)->apple.getWeight()>).collect(Collectors.toList());
或者使用匿名函数的形式:
List<Apple> greenAppleSet = AppleFilter(appleList, new Predicate<Apple>() { public boolean test(Apple apple) { return "green".equals(apple.getColor()); }; }); List<Apple> heavyAppleSet = AppleFilter(appleList, new Predicate<Apple>() { public boolean test(Apple apple) { return apple.getWeight() > 150; }; }); System.out.println("=======绿苹果======="); for (Apple apple:greenAppleSet) { System.out.println(apple.getColor()); } System.out.println("=======大苹果======="); for (Apple apple:heavyAppleSet) { System.out.println(apple.getWeight()); }
java8实战:filter的简单使用的更多相关文章
- Java8过滤器(Filter)
1.在Java之前对List进行过滤的方式 public class BeforeJava8 { public static void main(String[] args) { List<Pe ...
- java 调用 C# 类库 实战视频, 非常简单, 通过 云寻觅 javacallcsharp 生成器 一步即可!
java 调用 C# 类库 实战视频, 非常简单, 通过 云寻觅 javacallcsharp 生成器 一步即可! 通过 云寻觅 javacallcsharp 生成器 自动生成java jni类库, ...
- MySQL实战 | 06/07 简单说说MySQL中的锁
原文链接:MySQL实战 | 06/07 简单说说MySQL中的锁 本文思维导图:https://mubu.com/doc/AOa-5t-IsG 锁是计算机协调多个进程或纯线程并发访问某一资源的机制. ...
- 3.2 Lucene实战:一个简单的小程序
在讲解Lucene索引和检索的原理之前,我们先来实战Lucene:一个简单的小程序! 一.索引小程序 首先,new一个java project,名字叫做LuceneIndex. 然后,在project ...
- Java8实战及自己的总结
java8 介绍 java8是2014年3月份,由Oracle发布的一个版本,又称之为jdk1.8,是现再我们在学习和工作中用的最多的一个版本. 在jdk1.8中,java8以添加非常多的新特性, ...
- Java8实战——自己的总结
java8 介绍 java8是2014年3月份,由Oracle发布的一个版本,又称之为jdk1.8,是现再我们在学习和工作中用的最多的一个版本. 在jdk1.8中,java8以添加非常多的新特 ...
- java8实战二------lambda表达式和函数式接口,简单就好
一.Lambda 可以把Lambda表达式理解为简洁地i表示可传递的匿名函数的一种方式:它没有名称,但它有参数列表.函数主体.返回类型,可能还是一个可以抛出的异常列表. 听上去,跟我们用的匿名类,匿名 ...
- Java8实战,
Supplier 1, @FunctionalInterfacepublic interface Supplier<T> { 2, T get(); 3, Supplier<A ...
- Meanshift filter实现简单图片的卡通化效果
利用Meanshift filter和canny边缘检测的效果,可以实现简单的图片的卡通化效果.简单的说,就是用Meanshift filter的结果减去canny算法的结果得到卡通化的效果. ...
随机推荐
- xml配置*的问题
spring配置种classpath * 和classpath的问题,class path有多个的情况下,会匹配第一个 <context:component-scan/>中两个**表示可以 ...
- 127.0.0.1 localhost 0.0.0.0 回环地址区别
127.0.0.1:一般认为是本机ip,这个没错.但是本机ip不只是 127.0.0.1 而是所有回环地址. 回环地址: 包括127.0.0.1在内的 所有 指向本机的地址.范围是 127.0.0. ...
- JAVA_HOME 设置为JDK 7无效
场景: Window 10中有Jdk 7和jdk8, 还有Oracle配置 环境变量的配置如下 然后JAVA_HOME 设置为java 7 但是java -version显示为java 8 解决方法 ...
- ESP8266 ESP-01调试方法
1. 用AMS1117搭建一个3.3V输出的电路 2. ESP8266 ESP-01接线 只要连接UTXD.GND.CH_PD.VCC.URXD这五个管脚就可以直接使用了. 注意的是CH_PD要接高电 ...
- piwik获取访客头像,自定义显示访问者头像(URL)和描述(标题和替代)
访客头像 自定义显示访问者头像(URL)和描述(标题和替代) 链接地址:https://plugins.matomo.org/VisitorAvatar#description
- 四旋翼基础算法学习2-IMU输入滤波算法
前言: 处理器读取陀螺仪加速度计数据后首先需要对数据进行滤波处理,此文分析比较几种常用的滤波算法. 参考学习:四轴加速度计滤波 IMU: IMU使用MPU9250(即MPU6500),设置加速度量程± ...
- 在IDEA中将SpringBoot项目打包成jar包的方法
SpringBoot项目无需依赖tomcat容器(内含)就可以发布,现在将打包步骤记录一下: 1. 打包前确认项目可以正常运行,打开Project Structure 快捷键 Ctrl+Shift+A ...
- SELinux杂谈
----------------------------- 文末有推荐参考文档列表--------------------------- SELinux(Security Enhanced Linux ...
- LeetCode——14. Longest Common Prefix
一.题目链接:https://leetcode.com/problems/longest-common-prefix/ 二.题目大意: 给定若干个字符串,找出它们的最长公共子串. 三.题解: 这道题目 ...
- 1.汇编指令介绍(arm)
本文作为本人学习过程中的记录及时不时的突发奇想偶记.鄙人菜鸟一只,文中如有错误或疏漏,若读者肯不吝赐教,在下感激零涕.文章一直不断更新中 一.汇编语言 汇编语言是一种应用计算机.微处理器.微控制器或其 ...