网站制作主要公司,手机关键词seo排名优化,怎样建设网站,更改wordpress标签分割符合java附加属性Java 9即将发布#xff01; 它不仅仅是Jigsaw项目 。 #xff08;我也很惊讶。#xff09;它给平台带来了很多小的变化#xff0c;我想一一看一下。 我将标记所有这些帖子#xff0c;您可以在这里找到它们。 让我们从…开始 流 Streams学习了两个新技巧。 第… java附加属性 Java 9即将发布 它不仅仅是Jigsaw项目 。 我也很惊讶。它给平台带来了很多小的变化我想一一看一下。 我将标记所有这些帖子您可以在这里找到它们。 让我们从…开始 流 Streams学习了两个新技巧。 第一个处理前缀流现在可以理解前缀。 我们可以使用谓词来测试流的元素从一开始就可以使用或删除它们直到第一个未通过测试为止。 Stream :: takeWhile 让我们先来看一下take StreamT takeWhile(Predicate? super T predicate); 在有序流上调用它会返回一个新的流该流包含通过谓词的元素 直到第一个失败 。 它有点像过滤器但是一旦第一个元素失败了谓词它就会切断流。 用它的话来说它从流中获取元素而谓词在不再存在时就保持并停止。 让我们来看一个例子 Stream.of(a, b, c, , e).takeWhile(s - !String.isEmpty(s));.forEach(System.out::print);Console: abc 容易吧 请注意即使e通过了谓词e也不是返回流的一部分。 但是它从未经过测试因为takeWhile是在空字符串之后完成的。 前缀 为了确保我们了解文档 让我们了解术语。 从流的第一个元素开始的有序流的子序列称为prefix 。 StreamString stream Stream.of(a, b, c, d, e);
StreamString prefix Stream.of(a, b, c);
StreamString subsequenceButNoPrefix Stream.of(b, c, d);
StreamString subsetButNoPrefix Stream.of(a, c, b); takeWhile操作将返回最长的前缀 该前缀仅包含通过谓词的元素。 前缀可以为空因此如果第一个元素使谓词失败它将返回空流。 相反前缀可以是整个流如果所有元素都通过谓词则操作将返回该前缀。 订购 谈论前缀仅对有序流有意义。 那么对于无序的人会发生什么呢 与流一样故意不指定行为以启用高性能实现。 从无序流中获取将返回那些通过谓词的元素的任意子集。 除非它们全部都执行否则它将始终返回整个流。 并发 从有序并行流中获取并不是最好的主意。 不同的线程必须配合以确保返回最长的前缀。 这种开销可能会降低性能以至于使流顺序变得更有意义。 发布时间由安迪·亚瑟在CC-BY 2.0 。 流:: drop 接下来是dropWhile StreamT dropWhile(Predicate? super T predicate); 它与takeFirst恰好相反在有序流上调用它将返回一个新的元素该元素包含使谓词失败的第一个元素和所有后续的元素。 或者更接近其名称它在谓词成立的同时丢弃元素并返回其余的元素。 时间为例 Stream.of(a, b, c, de, f).dropWhile(s - s.length 1);.forEach(System.out::print);Console: def 请注意即使它不通过谓词流也包含f。 与之前类似操作在第一个字符串使谓词失败在这种情况下为ef之后停止。 在无序流上调用该操作将删除那些无法通过谓词的元素的子集。 除非所有人都这样做否则它将始终返回空流。 我们上面所说的有关术语和并发性的所有其他内容也适用于此。 流:: ofNullable 那真的很琐碎。 与其讨论不如让它实际运行 long one Stream.ofNullable(42).count();
long zero Stream.ofNullable(null).count(); 你答对了 除非它为null否则它将使用给定的元素创建一个流在这种情况下该流为空。 打哈欠 不过它有其用例。 以前如果某个邪恶的API给您提供了一个可能为null的实例则开始在该实例可以提供的流上开始操作是circuit回的 // findCustomer can return null
Customer customer findCustomer(customerId);StreamOrder orders customer null? Stream.empty(): customer.streamOrders();
// do something with stream of orders ...// alternatively, for the Optional lovers
Optional.ofNullable(customer).map(Customer::streamOrders).orElse(Stream.empty(). // do something with stream of orders 现在情况变得更好了 // findCustomer can return null
Customer customer findCustomer(customerId);Stream.ofNullable(customer).flatMap(Customer::streamOrders). // do something with stream of orders反射 我们已经看到了takeWhile如何返回通过谓词的元素并在第一个元素失败时将流切断。 相反当第一个元素未通过谓词时dropWhile也会剪切流但在其后将返回该谓词。 作为一个告别让我们看一个最后的示例在该示例中我们从HTML文件的meta元素流式传输所有行 Files.lines(htmlFile).dropWhile(line - !line.contains(meta).skip(1).takeWhile(line - !line.contains(/meta) 我们还了解了ofNullable。 我不知道为什么看起来如此熟悉 是的当然是可选的 巧合的是我接下来会介绍。 :) 敬请关注 翻译自: https://www.javacodegeeks.com/2016/06/java-9-additions-stream.htmljava附加属性