JAVA中,流旨在创建一种关注“做什么而非怎么做”的设计理念,我们无需关心流内具体的实现,而把更多精力放在流需要做什么上面。例如我们需要计算一个字符串数组中,长度大于10的有多少,参见下面的代码清单:
public static void main(String args[]) throws IOException{
String contents = new String(Files.readAllBytes(Paths.get("/Users/liebes/Desktop/open.route")), StandardCharsets.UTF_8);
List<String> words = Arrays.asList(contents.split("\\PL+"));
long count = 0;
// 怎么做
for(String s : words){
if(s.length() > 10) count++;
}
System.out.println(count);
// 做什么
count = words.stream().filter(s -> s.length() > 10).count();
System.out.println(count);
count = words.parallelStream().filter(s -> s.length() > 10).count();
System.out.println(count);
}
第一种方式,是很容易想到的一种,循环遍历计算的一种方法,而第二种则是使用了流的概念。
Stream,流。我们可以理解为水流,所有的流操作都是惰性的,即当你访问数据的时候,相关操作才会执行。我们在水流的行进方向设置我们想要完成的操作,当水流经过时,就会执行相关的操作。例如上面的 count = words.stream().filter(s -> s.length() > 10).cou...
阅读全文