Java SE8 的流库

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...     阅读全文
Liebes's avatar
Liebes 5月 03, 2018