在Java Stream中,可以使用Collectors.groupingBy()方法來對元素進行分組,然后通過Collectors.counting()方法統計每個分組中元素的數量。
以下是一個示例代碼,演示如何對一個包含數字的Stream進行分組并統計元素數量:
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Main {
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3, 4, 1);
Map<Integer, Long> countByNumber = numbers.stream()
.collect(Collectors.groupingBy(n -> n, Collectors.counting()));
countByNumber.forEach((number, count) -> System.out.println(number + " : " + count));
}
}
在上面的例子中,我們首先將數字列表轉換為一個Stream,然后使用groupingBy()方法根據數字進行分組,然后通過counting()方法統計每個分組中元素的數量。最后,我們將結果打印出來,得到如下輸出:
1 : 3
2 : 2
3 : 2
4 : 2
5 : 1
這表明數字1出現了3次,數字2、3、4分別出現了2次,數字5出現了1次。