标签:数组 上下 编程 一段 图片 运算 exec contact 部分
函数式编程思想:强调做什么,而不是怎么做. 只要能获取结果,谁去做怎么做不重要,重要的是结果,而不是过程.
面向对象:做一件事就去找能做这个事的对象,调用对象的方法去完成事情
==原本冗余的代码可以更加清楚,减少代码量==
Runnable接口实现多线程, 匿名内部类----
他省去了面向对象的条条框框,右三部分组成
- 一些参数
- 一个箭头
- 一段代码
(参数类型 参数名称)->{代码语句}
概念: 有且只有一个抽象方法的接口
语法糖! 指使用更加方便,但是原理不变的代码语法,例如for each 其实底层原理就是迭代器,,应用方面Java中的lambda就是匿名内部类的语法糖!
表示,只要用这个注解,编译器就会强制的检查接口是否确实只有一个方法,否则就会报错.
public class TestDelayedExecute {
//性能浪费的日志案例
private static void log(int level ,String msg){
if (level==1){
System.out.println(msg);
}
}
//利用lambda表达式延迟执行
private static void log2(int level,MessageBuilder printMsg){
if (level ==1){
System.out.println(printMsg.printMsg());
}
}
//测试
public static void main(String[] args) {
String msgA = "I ";
String msgB = "Love ";
String msgc = "Java";
log(1,msgA+msgB+msgc);
log2(2,()->{
System.out.println("我是执行了的Lambda");
return msgA+msgB+msgc;
});
}
}
@FunctionalInterface
interface MessageBuilder{
String printMsg();
}
被提供主要在java . util. function包中
stream流不同于IO流是一个完全不一样的概念
流式思想 : 类似于工厂车间的"生产流水线"
collection集合都可以通过stream流来获取
延迟方法:返回值类型仍然是 Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方 法均为延迟方法。)
终结方法:返回值类型不再是 Stream 接口自身类型的方法,因此不再支持类似 StringBuilder 那样的链式调 用。本小节中,终结方法包括 count 和 forEach 方法。 **
forEach:逐一处理
filter:过滤
count: 统计个数
limit:取用前几个
skip 跳过前几个
contact: 组合
冗余的lambda场景
双冒号
::
为引用运算符,而在表达式中被称为 方法引用
标签:数组 上下 编程 一段 图片 运算 exec contact 部分
原文地址:https://www.cnblogs.com/tongstudy/p/12398343.html