首先,給大家推薦一個好的地方:http://ifeve.com/stream/ 可以好好學一下
接下來,今天要删除數組中的某些元素,想到了之前用過的這個JDK8的Stream
1.Array轉化為Stream并進行篩選
【有個坑】:數組轉化為Stream有兩種方式
1.Stream.of(數組)
2.Arrays.stream(數組)
差別:兩種都支援引用資料類型,但是如果是基本資料類型的話,請選擇第二種,是以妥善期間使用第二種比較合适。
【注意】:
使用stream進行任何操作,并不會是以而改變原資料的任何地方。是以想要擷取到處理後的資料,需要你接收下來。
【代碼展示】:
①filter中一行代碼如下:
②filter中寫代碼塊的代碼如下:
【注意】:filter中寫代碼塊,需要true或者false都要傳回,否則要報錯!
2.List集合轉化為Stream
【集合.stream()即可】
3.使用count()計數
計算List中對象的某個屬性值為一個特定值的 對象有多少個
先把list轉化為stream(),然後filter中寫出需要滿足的篩選條件,最後count()計數。
4.List進行filter篩選後擷取到新的List
5.List按照對象的某個字段進行去重 distinct()
【需要進行去重操作的對象,重新equals()方法】
例如下面:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
View Code
6.List中有需要按照某個字段進行分組,可以使用Collectors.groupingBy()分組器實作
例如:
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIml2ZuUWYxYmZhR2MiNjY3QGMjFGZlNTOzUWZjJGO2YzM1MWMfdWbp9CXt92Yu4GZjlGbh5SZslmZxl3Lc9CX6MHc0RHaiojIsJye.gif)
結果類似于下面:Map的鍵是分組字段productId ,值是一組的list