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/ ...
随机推荐
- 深入理解dijkstra+堆优化
深入理解dijkstra+堆优化 其实就这几种代码几种结构,记住了完全就可以举一反三,所以多记多练多优化多思考. Dijkstra 对于一个有向图或无向图,所有边权为正(边用邻接矩阵的形式给出), ...
- 不是有效的win32应用程序
问题描述: 用vs2012编写的程序在xp下运行提示"不是有效的win32应用程序", 改成静态编译还是会提示上面的错误 解决办法: 原来常规里面的平台工具集的设置如上,更改为下面 ...
- ubuntu安装完成后需要做的事情
1.删除libreoffice libreoffice虽然是开源的,但是Java写出来的office执行效率实在不敢恭维,装完系统后果断删掉 [html] view plain copy sudo a ...
- ztree 数组和树结构互转算法
//树转化为数组transformToArrayFormat: function (setting, nodes) { if (!nodes) return []; var childKey = se ...
- 火狐foxyproxy + burp
下载 火狐foxyproxy 和 burp 两个代理ip端口填写一致 如果对于公司有正向代理服务器,则需要配置burp的上游代理 对于IE浏览器的代理是windows操作系统的全局代理,在ie配置代理 ...
- CSS Sprites技术原理和使用
在分析各个网站的CSS时,我们经常可以看到一些网站有很多的元素共享了一张背景图片,而这张背景图片包含了所有这些元素需要的背景,这种技术就叫做CSS Sprites. 淘宝的css sprites ...
- linux中errno及perror的应用
1 perror 定义在头文件<stdlib.h>中 void perror(const char *s);函数说明 perror ( )用 来 将 上 一 个 函 数 发 生 错 误 的 ...
- KMP算法及实现
#include<cstdio> #include<cmath> #include<cstring> #include<iostream> #inclu ...
- 12-python基础—python3中的reduce()
在 Python3 中,reduce() 函数已经被从全局名字空间里移除了,它现在被放置在 functools 模块里,需要通过引入 functools 模块来调用 reduce() 函数: from ...
- DDCTF 北京地铁
这周打了ddctf,被打成了dd 北京地铁题目给了一张北京地铁图,提示如下:Color Threshold 提示:AES ECB密钥为小写字母提示2:密钥不足位用\0补全提示3:不要光记得隐写不看图片 ...