java8的正确使用姿势
ackage com.expgiga.Java8; import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.function.Consumer;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.function.Supplier; /**
* Java8内置的四大核心函数式接口
*
* 1.Consumer<T>:消费型接口
* void accept(T t);
* 2.Supplier<T>:供给型接口
* T get();
* 3.Function<T, R>:函数型接口
* R apply(T t);
* 4.Predicate<T>:断言型接口
* boolean test(T t);
*/
public class TestLambda3 {
public static void main(String[] args) {
//Consumer<T>消费型接口
happy(10000, (m) -> System.out.println("Play Game!: " + m + " yuan")); //Supplier<T>
List<Integer> numList = getNumList(10, () -> (int) (Math.random() * 100));
for (Integer num : numList) {
System.out.println(num);
} //Function<T, R>函数型接口
String newStr = strHandler("\t\t\t 你牛逼 ", (str) -> str.trim());
System.out.println(newStr); String subStr = strHandler("我也牛逼,大家都牛逼", (str) -> str.substring(2, 5));
System.out.println(subStr); //Predicate<T> 断言型接口
List<String> list = Arrays.asList("Hello", "you", "me", "Java", "Scala");
List<String> newlist = filterStr(list, (s) -> s.length() > 3);
for (String str : newlist) {
System.out.println(str);
}
} private static void happy(double money, Consumer<Double> con) {
con.accept(money);
} //需求:产生一些整数,并放入集合中
private static List<Integer> getNumList(int num, Supplier<Integer> sup) {
List<Integer> list = new ArrayList<>(); for (int i = 0; i < num; i++) {
Integer n = sup.get();
list.add(n);
} return list;
} //需求:用于处理字符串
private static String strHandler(String str, Function<String, String> fun) {
return fun.apply(str);
} //需求:将满足条件的字符串放入集合中去
private static List<String> filterStr(List<String> list, Predicate<String> predicate) {
List<String> strList = new ArrayList<>(); for (String str : list) {
if (predicate.test(str)) {
strList.add(str);
}
} return strList;
} }
java8的正确使用姿势的更多相关文章
- java8 Optional正确使用姿势
Java 8 如何正确使用 Optional import lombok.Data; import lombok.EqualsAndHashCode; import lombok.ToString; ...
- xpath轴的正确使用姿势
网上看了许多关于轴的介绍,只介绍了语法,而没有明说具体实际中该怎么使用,百思不得其解. 背景--python中使用xpath: ----------------------------------- ...
- 高版本jquery尤其是1.10.2的版本设置input radio设置值的最正确的姿势。
$("input:radio[name="analyshowtype"]").attr("checked",false); $(" ...
- NSnotificationCenter 正确使用姿势, removeObject 探索
最近在做平板的过程中,发现了一些很不规范的代码.偶然修复支付bug的时候,看到其他项目代码,使用通知的地方没有移除,我以为我这个模块的支付闪退是因为他通知没有移除的缘故.而在debug和看了具体的代码 ...
- 微信H5中静默登录及非静默登录的正确使用姿势
在微信中打开网页且需要调用微信登录接口时,微信官方给我们提供了两种登录调用方式:静默登录和非静默登录:但是官方文档中却没有说明在何种情况下使用静默登录,何种情况下使用非静默登录,所以在这里,我想将之前 ...
- Java日志正确使用姿势
前言 关于日志,在大家的印象中都是比较简单的,只须引入了相关依赖包,剩下的事情就是在项目中“尽情”的打印我们需要的信息了.但是往往越简单的东西越容易让我们忽视,从而导致一些不该有的bug发生,作为一名 ...
- MongoDB系列:五、MongoDB Driver使用正确的姿势连接复制集
MongoDB复制集(Replica Set)通过存储多份数据副本来保证数据的高可靠,通过自动的主备切换机制来保证服务的高可用.但需要注意的时,连接副本集的姿势如果不对,服务高可用将不复存在. 使用复 ...
- 基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势)
基于winserver的Apollo配置中心分布式&集群部署实践(正确部署姿势) 前言 前几天对Apollo配置中心的demo进行一个部署试用,现公司已决定使用,这两天进行分布式部署的时候 ...
- 玩转java多线程(wait和notifyAll的正确使用姿势)
转载请标明博客的地址 本人博客和github账号,如果对你有帮助请在本人github项目AioSocket上点个star,激励作者对社区贡献 个人博客:https://www.cnblogs.com/ ...
随机推荐
- Docker Machine 管理-安装docker-machine(15)
前面我们的实验环境中只有一个 docker host,所有的容器都是运行在这一个 host 上的.但在真正的环境中会有多个 host,容器在这些 host 中启动.运行.停止和销毁,相关容器会通过网络 ...
- 1.zabbix编译安装(环境lnmp)
zabbix服务端安装 1.使用脚本安装.脚本内容如下.安装完用http://192.168.159.20/zabbix #!/bin/bash #使用说明,此版本是针对程序安装路径不在/opt/下的 ...
- (12)C++ 继承
1继承语法 class Base { public: void print() { cout << "Base" << endl; } }; class S ...
- 力扣算法——141LinkedListCycel【E】
Given a linked list, determine if it has a cycle in it. To represent a cycle in the given linked lis ...
- 使用vue-cli3时怎么mock数据
应用场景 在前后端分离的开发模式中,后端给前端提供一个接口,由前端向后端发请求,得到数据后前端进行渲染. 由于前后端开发进度的不统一,前端往往使用本地的测试数据进行数据渲染的测试. 如何配置 在vue ...
- poi 处理空单元格
http://poi.apache.org/spreadsheet/quick-guide.html 用google翻译 找到
- TOPO DN 解析
介绍 有一个算法,是将大量TOPO DN实例解析成结构形式.并依据DN获取对应的数据.本人感觉值得分享.并供大家讨论与优化. 注意:TOPO DN实例的顺序,是被我的其他算法预处理过的 ...
- 不用 PS 和 AI,5个网站能做出更好看的设计
要完成漂亮的设计,一定要掌握 PS.AI.Sketch 等专业的做图工具才可以.其实,现在有很多网站可以帮助不会专业设计工具的我们,做出很多很漂亮的设计,完成自己的设计需求.今天,我们就来介绍一下这些 ...
- 《node.js开发指南》partial is not defined的解决方案
由于ejs的升级,<node.js开发指南>中使用的 partial 函数已经摒弃,使用foreach,include代替 原来的代码是: <%- partial('listitem ...
- shell数组变量