Java中stream的簡單使用
在Java8中,出現了stream流的概念。我個人認為,流的使用可以幫助我們更好的對數據集合進行叠代。
下面,先簡單看一下普通for循環和stream流的代碼。
public static void main(String[] args) { //取出偶數 List<Integer> list = Arrays.asList(1,2,3,4); //1.for循環 List<Integer> newList1 = new ArrayList<>(); for (Integer integer : list) { if(integer % 2 == 0){ newList1.add(integer); } } System.out.println(newList1); //2.stream流 List<Integer> newList2 = list.stream().filter(x -> x % 2 == 0).collect(Collectors.toList()); System.out.println(newList2); }
輸出結果:
[2, 4]
[2, 4]
可以看出,對於stream流的使用,有時是可以簡化我們代碼的負責度,並且配合lambda表達式,可以讓代碼更加容易被人理解。
下面簡單介紹一下Java中stream流的使用:
1.創建stream流
List集合創建創建:調用List的stream方法即可,如 list.stream()
數組的創建方式為:通過Arrays.stream()傳入數組即可,如:Arrays.stream(new Integer[]{1,2})
註:stream流被創建出來之後只能被使用一次,如需再次循環需要再次創建!
2. 常用方法介紹:
流的方法被分為中間操作和終端操作,顧名思義,中間操作是指調用方法後生成新的流,可以繼續執行操作,而終端操作則是結束流的使用。
中間操作:
1.filter 過濾掉不符合的數據
2.limit 只取前x條數據
3.skip 跳過(刪除)x條數據
4.distinct 去重復數據
5.sorted 排序
6.map 對數據重整,生成新的數據流(如何從用戶集合流中取出用戶年齡作為新的流)
終端操作:
1.count 統計數據數量
2.forEach 對流中每個數據都執行傳入的方法
3.anyMatch 至少一個匹配,返回bool
4.allMatch 匹配所有,返回bool
5.collect 可以傳入集合中的常用方法,例如:Collector.toList()將流轉回集合,Collector.groupingBy()將流中數據分組
6.reduce 進行歸約操作,例如求和等
今天就先做了一下Java中stream流的簡單使用介紹,謝謝。
Java中stream的簡單使用