摘要: /** * 定义见面的函数式接口 */ @FunctionalInterface public interface Greetable { //定义一个见面的方法 void greet(); } /** * 定义父类 */ public class Human { //定义一个sayHello的方法 阅读全文
posted @ 2022-09-26 17:02 夫君 阅读(29) 评论(0) 推荐(0)
摘要: @FunctionalInterface public interface Calcable { //定义一个抽象方法,传递一个整数,对整数进行绝对值计算并返回 int calsAbs(int number); } /** * 通过类名引用静态成员方法 * 类已经存在,静态成员方法也已经存在 * 就 阅读全文
posted @ 2022-09-26 16:33 夫君 阅读(40) 评论(0) 推荐(1)
摘要: /** * 定义一个打印的函数式接口 */ @FunctionalInterface public interface Printable { //定义字符串的抽象方法 void print(String s); } public class MethodRerObject { //定义一个成员方法 阅读全文
posted @ 2022-09-26 16:06 夫君 阅读(29) 评论(0) 推荐(1)
摘要: 在使用Lambda表达式的时候,我们实际上传递进去的代码就是一种解决方案:拿什么参数做什么操作。那么考虑一种情况:如果我们在Lambda中所指定的操作方案,已经有地方存在相同方案,那是否还有必要再写重复逻辑? 冗余的Lambda场景来看一个简单的函数式接口以应用Lambda表达式: /** * 定义 阅读全文
posted @ 2022-09-26 15:37 夫君 阅读(40) 评论(0) 推荐(1)
摘要: public class Person { private String name; public Person() { } public Person(String name) { this.name = name; } @Override public String toString() { r 阅读全文
posted @ 2022-09-26 15:17 夫君 阅读(32) 评论(0) 推荐(1)
摘要: 组合:concat 如果有两个流,希望合并成为一个流,那么可以使用Stream 接口的静态方法concat : static <T> Stream<T> concat(Stream<? extends T> a, Stream<? extends T> b) 备注:这是一个静态方法,与java.la 阅读全文
posted @ 2022-09-26 14:26 夫君 阅读(128) 评论(0) 推荐(1)
摘要: 取用前几个:limit limit 方法可以对流进行截取,只取用前n个。方法签名: Stream<T> limit(long maxSize); 参数是一个long型,如果集合当前长度大于参数则进行截取;否则不进行操作。基本使用: /** * Stream流中的常用方法_limit:用于截取流中的元 阅读全文
posted @ 2022-09-26 14:16 夫君 阅读(208) 评论(0) 推荐(0)
摘要: 映射:map:如果需要将流中的元素映射到另一个流中,可以使用map方法 <R> Stream<R> map(Function<? super T,? extends R> mapper); 该接口需要一个Function函数式接口参数,可以将当前流中的T类型数据转换为另一种R类型的流 示列: pub 阅读全文
posted @ 2022-09-26 14:00 夫君 阅读(307) 评论(0) 推荐(1)
摘要: 流模型的操作很丰富,这里介绍一些常用的API。这些方法可以被分成两种: 延迟方法:返回值类型仍然是Stream 接口自身类型的方法,因此支持链式调用。(除了终结方法外,其余方法均为延迟方法) 终结方法:返回值类型不再是Stream 接口自身类型的方法,因此不再支持类似StringBuilder 那样 阅读全文
posted @ 2022-09-26 13:42 夫君 阅读(713) 评论(0) 推荐(0)
摘要: 所有的Collection集合都可以通过stream默认方法获取流 Stream接口的静态方法of可以获取数组对应的流 public static void main(String[] args) { //把集合转换为Stream流 ArrayList<String> list = new Arra 阅读全文
posted @ 2022-09-26 13:13 夫君 阅读(59) 评论(0) 推荐(1)
摘要: 1.流式思想概述 整体来看,流式思想类似于工厂车间的“生产流水线” 当需要对多个元素进行操作(特别是多步操作)的时候,考虑到性能及便利性,我们应该首先拼好一个“模型”步骤 方案,然后再按照方案去执行它 这张图中展示了过滤、映射、跳过、计数等多步操作,这是一种集合元素的处理方案,而方案就是一种“函数模 阅读全文
posted @ 2022-09-26 11:26 夫君 阅读(50) 评论(0) 推荐(0)
摘要: Stream 的更优写法 /** * 使用Stream流的方式,遍历集合,对集合中的数据进行过滤 * Stream流是JDK1.8之后出现的 * 关注的是做什么,而不是怎么做 */ public class Demo02Stream { public static void main(String[ 阅读全文
posted @ 2022-09-26 11:08 夫君 阅读(684) 评论(0) 推荐(1)
摘要: Java 8的Lambda让我们可以更加专注于做什么(What),而不是怎么做(How),这点此前已经结合内部类进行 了对比说明。现在,我们仔细体会一下上例代码,可以发现:= for循环的语法就是“怎么做 for循环的循环体才是“做什么” 为什么使用循环?因为要进行遍历。但循环是遍历的唯一方式吗?遍 阅读全文
posted @ 2022-09-26 10:45 夫君 阅读(194) 评论(0) 推荐(1)