1.從迭代器到Stream操作
以前我們遍歷一個集合可以用for 循環,iterator迭代器。jdk8新推出了一項特性,Stream語法,用Stream語法可以讓代碼更加簡潔,而且原生支持的并發操作也能提高效率
List<Integer> list = new ArrayList<>();for (int i = 0; i < 100000; i++) { list.add((int) (Math.random() * 100));}int count = 0;for (int i : list) { if (i > 50) count++;}System.out.上面的步驟大致是 一個list先轉換為stream流,filter等方法就相當于對集合里的每個元素進行遍歷然后根據固定條件進行篩選,這些步驟后stream還沒有結束它的生命周期,必須要有一個結束方法結束stream,count()方法可以產生一個結果,以結束stream流。有人說我調用filter方法對集合處理之后,只想返回處理后的集合,可以用下面的方法進行操作:
List<Integer> collect = list.stream().filter((x) -> x > 50).collect(Collectors.toList());System.out.println("返回的集合個數:" + collect.size());Stream流作為一個操作流水線,它的執行順序并不是按照代碼的順序來,它只有執行到count方法,當count方法需要過濾后的東西去統計時,才會執行之前filter方法,但是如果用下面的方法,就可以讓stream并行執行count和filter方法。
List<Integer> collect1 = list.parallelStream().filter((x) -> x > 50).collect(Collectors.toList());parallelStream() 替代了之前的stream()方法。
未完待續
新聞熱點
疑難解答