java8 - 3
- 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;
- import org.junit.Test;
- /*
- * Java8 内置的四大核心函数式接口
- *
- * Consumer<T> : 消费型接口
- * void accept(T t);
- *
- * Supplier<T> : 供给型接口
- * T get();
- *
- * Function<T, R> : 函数型接口
- * R apply(T t);
- *
- * Predicate<T> : 断言型接口
- * boolean test(T t);
- *
- */
- public class TestLambda3 {
- //Predicate<T> 断言型接口:
- @Test
- public void test4(){
- List<String> list = Arrays.asList("Hello", "atguigu", "Lambda", "www", "ok");
- List<String> strList = filterStr(list, (s) -> s.length() > 3);
- for (String str : strList) {
- System.out.println(str);
- }
- }
- //需求:将满足条件的字符串,放入集合中
- public List<String> filterStr(List<String> list, Predicate<String> pre){
- List<String> strList = new ArrayList<>();
- for (String str : list) {
- if(pre.test(str)){
- strList.add(str);
- }
- }
- return strList;
- }
- //Function<T, R> 函数型接口:
- @Test
- public void test3(){
- 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);
- }
- //需求:用于处理字符串
- public String strHandler(String str, Function<String, String> fun){
- return fun.apply(str);
- }
- //Supplier<T> 供给型接口 :
- @Test
- public void test2(){
- List<Integer> numList = getNumList(10, () -> (int)(Math.random() * 100));
- for (Integer num : numList) {
- System.out.println(num);
- }
- }
- //需求:产生指定个数的整数,并放入集合中
- public 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;
- }
- //Consumer<T> 消费型接口 :
- @Test
- public void test1(){
- happy(10000, (m) -> System.out.println("你们刚哥喜欢大宝剑,每次消费:" + m + "元"));
- }
- public void happy(double money, Consumer<Double> con){
- con.accept(money);
- }
- }
java8 - 3的更多相关文章
- Java8实战分享
虽然很多人已经使用了JDK8,看到不少代码,貌似大家对于Java语言or SDK的使用看起来还是停留在7甚至6. Java8在流式 or 链式处理,并发 or 并行方面增强了很多,函数式的风格使代码可 ...
- java8中lambda表达式的应用,以及一些泛型相关
语法部分就不写了,我们直接抛出一个实际问题,看看java8的这些新特性究竟能给我们带来哪些便利 顺带用到一些泛型编程,一切都是为了简化代码 场景: 一个数据类,用于记录职工信息 public clas ...
- Android Studio2.1.2 Java8环境下引用Java Library编译出错
转载请注明出处:http://www.cnblogs.com/LT5505/p/5685242.html 问题:在Android Studio2.1.2+Java8的环境下,引用Java Librar ...
- Java笔记——Java8特性之Lambda、方法引用和Streams
Java8已经推出了好一段时间了,而掌握Java8的新特性也是必要的,如果要进行Spring开发,那么可以发现Spring的官网已经全部使用Java8来编写示例代码了,所以,不学就看不懂. 这里涉及三 ...
- 关于Java8函数式编程你需要了解的几点
函数式编程与面向对象的设计方法在思路和手段上都各有千秋,在这里,我将简要介绍一下函数式编程与面向对象相比的一些特点和差异. 函数作为一等公民 在理解函数作为一等公民这句话时,让我们先来看一下一种非常常 ...
- Java8并发教程:Threads和Executors
来之:ImportNew 欢迎阅读我的Java8并发教程的第一部分.这份指南将会以简单易懂的代码示例来教给你如何在Java8中进行并发编程.这是一系列教程中的第一部分.在接下来的15分钟,你将会学会如 ...
- java8 学习系列--NIO学习笔记
近期有点时间,决定学习下java8相关的内容: 当然了不止java8中新增的功能点,整个JDK都需要自己研究的,不过这是个漫长的过程吧,以自己的惰性来看: 不过开发中不是有时候讲究模块化开发么,那么我 ...
- Java8函数式编程
在Java8的 java.util.function中包含以下几个接口 1.Function,先上源码 /* * Copyright (c) 2010, 2013, Oracle and/or its ...
- Java8闭包
闭包在很多语言中都存在,例如C++,C#.闭包允许我们创建函数指针,并把它们作为参数传递,Java编程语言提供了接口的概念,接口中可以定义抽象方法,接口定义了API,并希望用户或者供应商来实现这些方法 ...
- Java8新特性——接口的默认方法和类方法
Java8新增了接口的默认方法和类方法: 以前,接口里的方法要求全部是抽象方法,java8以后允许在接口里定义默认方法和类方法: 不同的是: 默认方法可以通过实现接口的类实例化的对象来调用,而类方法只 ...
随机推荐
- python模块module package
python模块module package module package 常用模块 模块与包的区别 模块分为内置模块.第三方模块,自定义模块 程序会先从内置到第三方再到当前工作目录下去找你导入的 ...
- 科学计算三维可视化---Traits属性的监听
Traits属性的监听 HasTraits对象所有Traits属性都自动支持监听功能,当每个Traits属性发生变化时,HasTraits对象会通知监听此属性的函数 两种监听模式 静态监听 动态监听 ...
- Java获取精确到毫秒的时间戳
import java.util.Date; public class Timestamp { /** 获取精确到毫秒的时间戳 * @param date * @return **/ public s ...
- 判断android是否是debug
1.使用BuildConfig.DEBUG,这个在住modul里面是有效的,但是在有依赖库里面使用就会一直返回false,可以通过下面的方法解决:在library的build.gradle中添加以下代 ...
- SpringBoot 线程池配置 实现AsyncConfigurer接口方法
目的是: 通过实现AsyncConfigurer自定义线程池,包含异常处理 实现AsyncConfigurer接口对异常线程池更加细粒度的控制 *a) 创建线程自己的线程池 b) 对void ...
- 为什么我要用 Node.js? 案例逐一介绍
介绍 JavaScript 高涨的人气带来了很多变化,以至于如今使用其进行网络开发的形式也变得截然不同了.就如同在浏览器中一样,现在我们也可以在服务器上运行 JavaScript ,从前端跨越到后端, ...
- CALayer的上动画的暂停和恢复
CHENYILONG Blog CALayer上动画的暂停和恢复 #pragma mark 暂停CALayer的动画-(void)pauseLayer:(CALayer*)layer{CFTimeIn ...
- STL-pair
每个pair 可以存储两个值.这两种值无限制. 定义 pair<int,char> p; pair<string,int> p; pair<int,int> p; ...
- Python Dict用法
Operation Result len(a) the number of items in a 得到字典中元素的个数 a[k] the item of a with key k 取得键K所对应的值 ...
- 动态SQL中变量赋值
在动态SQL语句中进行变量的值绑定比较麻烦,这儿做个记录 declare @COUNT int,@sql nvarchar(max) set @sql = 'select @COUNT = count ...