关键词:
一、四大函数式接口
概念:只有一个方法的接口
@FunctionalInterface
public interface Runnable
public abstract void run();
1.Function接口
源码:
Demo:
package com.chenchen;
import java.util.function.Function;
/**
* Function 函数型接口, 有一个输入参数,有一个输出
* 只要是 函数型接口 可以 用 lambda表达式简化
*/
public class Demo01
public static void main(String[] args)
//
// Function<String,String> function = new Function<String,String>()
// @Override
// public String apply(String str)
// return str;
//
// ;
Function<String,String> function = (str)->return str;;
System.out.println(function.apply("asd"));
2.断定型接口:
有一个输入参数,返回值只能是 布尔值!
源码:
Demo:
package com.chenchen.function;
import java.util.function.Predicate;
/**
* 断定型接口:有一个输入参数,返回值只能是 布尔值!
*/
public class Demo02
public static void main(String[] args)
// 判断字符串是否为空
// Predicate<String> predicate = new Predicate<String>()
@Override
public boolean test(String str)
return str.isEmpty();
;
Predicate<String> predicate = (str) ->
return str.isEmpty();
;
System.out.println(predicate.test(""));
3.消费型接口:
源码:
Demo:
package com.chenchen.function;
import java.util.function.Consumer;
/**
* Consumer 消费型接口: 只有输入,没有返回值
*/
public class Demo03
public static void main(String[] args)
// Consumer<String> consumer = new Consumer<String>()
// @Override
// public void accept(String str)
// System.out.println(str);
//
// ;
Consumer<String> consumer = (str) ->
System.out.println(str);
;
consumer.accept("sdadasd");
4.供给型接口
源码:
Demo:
package com.chenchen.function;
import java.util.function.Supplier;
/**
* Supplier 供给型接口 没有参数,只有返回值
*/
public class Demo04
public static void main(String[] args)
// Supplier supplier = new Supplier<Integer>()
// @Override
// public Integer get()
// System.out.println("get()");
// return 1024;
//
// ;
Supplier supplier = () ->
return 1024;
;
System.out.println(supplier.get());
二、Stream流式计算
大数据的本质为存储+计算,集合与数据库的本质都是存储的,而计算的工作可以交给流来操作。
举例:
package com.chenchen.stream;
import java.util.Arrays;
import java.util.List;
/**
* 题目要求:一分钟内完成此题,只能用一行代码实现!
* 现在有5个用户!筛选:
* 1、ID 必须是偶数
* 2、年龄必须大于23岁
* 3、用户名转为大写字母
* 4、用户名字母倒着排序
* 5、只输出一个用户!
*/
public class Test
public static void main(String[] args)
User u1 = new User(1, "a", 21);
User u2 = new User(2, "b", 22);
User u3 = new User(3, "c", 23);
User u4 = new User(4, "d", 24);
User u5 = new User(6, "e", 25);
// 集合就是存储
List<User> list = Arrays.asList(u1, u2, u3, u4, u5);
// 计算交给Stream流
// lambda表达式、链式编程、函数式接口、Stream流式计算
list.stream()
.filter(u ->
return u.getId() % 2 == 0;
)
.filter(u ->
return u.getAge() > 23;
)
.map(u ->
return u.getName().toUpperCase();
)
.sorted((uu1, uu2) ->
return uu2.compareTo(uu1);
)
.limit(1)
.forEach(System.out::println);
33jdk1.8新特性(lambda表达式stream流)(代码片段)
目录Lambda表达式自定义接口和Lambda表达式带返回值的情况参数个数只有一个Lambda表达式作为参数传递Lambda表达式注意事项JDK1.8提供的函数式接口ConsumerSupplierPredicateFunction方法引用对象名::实例方法类名::静态方法名类名::实例方法... 查看详情
jdk1.8新特性之--函数式接口
在上一篇文章中我们介绍了JDK1.8的新特性有以下几项。1.Lambda表达式2.方法引用3.函数式接口4.默认方法5.Stream6.Optional类7.Nashormjavascript引擎8.新的日期时间API9.Base64之前学习了前面两项Lambda表达式,方法引用,这一篇学习函数式接... 查看详情
java8新特性:lambda表达式方法和构造器引用streamapi新时间与日期api注解(代码片段)
Java8新特性:Lambda表达式、方法和构造器引用、StreamAPI、新时间与日期API、注解1、Java8新特性1.1、主要的新特性:1.2、编程风格2、Lambda表达式2.1、Lambda基础语法2.2、Lambda表达式需要“函数式接口”的支持2.3、Lambda表达式... 查看详情
jdk1.8新特性——stream(流)的终止操作(查找与匹配的示例演示)(代码片段)
目录一、Stream(流)的理解二、Stream(流)是什么三、Stream(流)的注意事项四、StreamAPI的操作步骤1、创建Stream2、中间操作Stream3、终止Stream4、StreamAPI的操作步骤图解五、Stream(流)的终止操作语... 查看详情
jdk1.8新特性——stream(流)的中间操作(筛选与切片的示例演示)(代码片段)
目录一、Stream(流)的理解二、Stream(流)是什么三、Stream(流)的注意事项四、StreamAPI的操作步骤1、创建Stream2、中间操作Stream3、终止Stream4、StreamAPI的操作步骤图解五、Stream(流)的中间操作语... 查看详情
jdk1.8新特性——stream(流)的中间操作基本语法
目录一、Stream(流)的理解二、Stream(流)是什么三、Stream(流)的注意事项四、StreamAPI的操作步骤1、创建Stream2、中间操作Stream3、终止Stream4、StreamAPI的操作步骤图解五、Stream(流)的中间操作语... 查看详情
jdk1.8新特性——stream(流)的终止操作基本语法
目录一、Stream(流)的理解二、Stream(流)是什么三、Stream(流)的注意事项四、StreamAPI的操作步骤1、创建Stream2、中间操作Stream3、终止Stream4、StreamAPI的操作步骤图解五、Stream(流)的终止操作语... 查看详情
jdk1.8新特性
...StreamAPI等操作,下面胖虎带领大家一探究竟Java8的一些新特性。ava8API添加了一个新的抽象称为流Stream,可以让你以一种声明的方式处理数据。这种风格将要处理的元素集合看作一种流,流在管道中传输,并且可以在管道的节点上... 查看详情
java8新特性-四大函数式接口(consumersupplierfunctionpredicate)使用样例(代码片段)
文章目录前言一、Consumer:消费型接口二、Supplier:供给型接口三、Function:函数型接口四、Predicate:断言型接口结尾前言函数式接口(FunctionalInterface)是Java8对一类特殊类型的接口的称呼。这类接口只定义了唯一的... 查看详情
jdk1.8新特性——stream(流)的创建(代码片段)
目录一、Stream(流)的理解二、Stream(流)是什么三、Stream(流)的注意事项四、StreamAPI的操作步骤1、创建Stream2、中间操作Stream3、终止Stream4、StreamAPI的操作步骤图解五、Stream(流)创建的四种方... 查看详情
java8新特性(代码片段)
java8新特性1.Lambda表达式1.Lambda表达式和方法引用的案例2.Lmabda表达式的6种形式3.Lambda表达式详细实例2.函数式接口1.函数式接口描述2.java内置四大函数式接口3.方法引用与构造器1.方法引用2.构造器引用4.StreamAPI1.StreamAPI说明2.stream实... 查看详情
jdk1.8新特性之lambda表达式(代码片段)
近期公司的新项目中使用了很多jdk1.8新特性,特来做个小结一.Lambda表达式的使用 lambda表达式也叫函数式编程:Lambda需要函数式接口支持,并且接口中的抽象方法只能有一个函数式接口:接口中只有一个抽象方法的接口,称... 查看详情
jdk1.8新特性——stream(代码片段)
目录生成流遍历流forEach()映射流map()过滤流filter()流的特点流统计count()限制流limit()skip(n)跳过前n个元素limit()+skip()实现分页组合流concat()流排序sorted()Comparator去重distinct()将多个stream合并到一个StreamflatMap()anyMatch()是否匹配任一元... 查看详情
java8都有哪些新特性
jdk1.8的新特性包括如下:一、接口的默认方法与静态方法,也就是接口中可以有实现方法二、Lambda表达式三、函数式接口与静态导入四、Lambda作用域在lambda表达式中访问外层作用域和老版本的匿名对象中的方式很相似。你可以直... 查看详情
010-jdk1.8版本新特性二-optional类,stream流(代码片段)
1.5、Optional类1、定义Optional类是一个可以为null的容器对象。如果值存在则isPresent()方法会返回true,调用get()方法会返回该对象。Optional是个容器:它可以保存类型T的值,或者仅仅保存null。Optional提供很多有用的方法,这样我们就... 查看详情
009-jdk1.8版本新特性一-展方法,lambda表达式,函数式接口方法引用构造引用(代码片段)
一、JDK1.8名称:Spider(蜘蛛)发布日期:2014-03-18新特性:1.1、扩展方法【接口的默认方法】 Java8允许我们给接口添加一个非抽象的方法实现,只需要使用default关键字即可,这个特征又叫做扩展方法. 在Java中只有单继承,... 查看详情
jdk1.8新特性——主要内容
目录一、jdk1.8新特性的主要内容二、jdk1.8新特性的优点一、jdk1.8新特性的主要内容Lambda表达式函数式接口方法引用与构造器引用StreamAPI接口中的默认方法与静态方法新时间日期API其他新特性二、jdk1.8新特性的优点速度更快代码更... 查看详情
图解jdk1.8新特性(代码片段)
图解jdk1.8新特性(1)函数式接口总结起来就以下几点:如果一个接口要想成为函数接口(函数接口可以直接用lambda方式简化),则必须有且仅有一个抽象的方法(非default和static)可以通过注解@FunctionalInterface注解通过在编译时... 查看详情