JAVA四大内置核心函数式接口和Stream流式计算干货分享
Posted 艾编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JAVA四大内置核心函数式接口和Stream流式计算干货分享相关的知识,希望对你有一定的参考价值。
经过一轮面试问题,脑子嗡嗡的,那经过上节课线程池,有没有醍醐灌顶的感觉,接着我们继续,给大家分享精彩的课程,详细掌握JUC并发编程,还记得第一节课老师课堂里讲到的“学了整个JUC并发编程课程,你将收获什么”,来大声告诉我!
记住了吗,涨薪、涨薪、涨薪;重要事情说三遍
本节课会为大家分享四大函数式接口和Stream流式计算课程
12、四大函数式接口
四大函数式接口
函数型接口,有一个输入,有一个输出
package com.coding.function4;
import java.util.function.Function;
public class Demo01 {
public static void main(String[] args) {
// new Runnable(); ()-> {}
//
// Function<String,Integer> function = new Function<String,Integer>() {
// @Override // 传入一个参数,返回一个结果
// public Integer apply(String o) {
// System.out.println("into");
// return 1024;
// }
// };
// 链式编程、流式计算、lambda表达式
Function<String,Integer> function = s->{return s.length();};
System.out.println(function.apply("abc"));
}
}
断定型接口,有一个输入参数,返回只有布尔值。
package com.coding.function4;
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 o) {
// if (o.equals("abc")){
// return true;
// }
// return false;
// }
//
// };
Predicate<String> predicate = s->{return s.isEmpty();};
System.out.println(predicate.test("abced"));
}
}
消费型接口,有一个输入参数,没有返回值
package com.coding.function4;
import java.util.function.Consumer;
public class Demo03 {
public static void main(String[] args) {
// 没有返回值,只能传递参数 消费者
// Consumer<String> consumer = new Consumer<String> () {
// @Override
// public void accept(String o) {
// System.out.println(o);
// }
// };
Consumer<String> consumer =s->{System.out.println(s);};
consumer.accept("123");
// 供给型接口 只有返回值,没有参数 生产者
}
}
供给型接口,没有输入参数,只有返回参数
package com.coding.function4;
import java.util.function.Supplier;
public class Demo04 {
public static void main(String[] args) {
// Supplier<String> supplier = new Supplier<String>() {
// @Override
// public String get() {
// return "aaa";
// }
// };
Supplier<String> supplier = ()->{return "aaa";};
System.out.println(supplier.get());
}
}
13、Stream流式计算
Stream流式计算
效率!
流(Stream)到底是什么呢?
数据库:保存数据 + SQL操作
数据就是数据,计算交给Stream!
==集合就是数据,Stream管理计算==
代码验证
package com.coding.stream;
import java.util.Arrays;
import java.util.List;
/**
* 一下数据,进行操作筛选用户:要求:一行代码做出此题,时长1分钟!
* 1、全部满足偶数ID
* 2、年龄都大于24
* 3、用户名转为大写
* 4、用户名字母倒排序
* 5、只能输出一个名字
*/
public class StreamDemo {
public static void main(String[] args) {
User u1 = new User(11, "a", 23);
User u2 = new User(12, "b", 24);
User u3 = new User(13, "c", 22);
User u4 = new User(14, "d", 28);
User u5 = new User(16, "e", 26);
// 集合管理数据
List<User> list = Arrays.asList(u1, u2, u3, u4, u5);
// 计算交给Stream
// 过滤 filter
// 映射 map
// 排序, sort
// 分页 limit
list.stream()
.filter(u->{return u.getId()%2==0;})
.filter(u->{return u.getAge()>24;})
.map(u->{return u.getUsername().toUpperCase();})
.sorted((o1,o2)->{return o2.compareTo(o1);})
.limit(1)
.forEach(System.out::println);
// 泛型、注解、反射
// 链式编程 + 流式计算 + lambda表达式
}
end
以上是关于JAVA四大内置核心函数式接口和Stream流式计算干货分享的主要内容,如果未能解决你的问题,请参考以下文章