Java Stream如何分組并統(tǒng)計(jì)元素?cái)?shù)量

小樊
401
2024-08-17 15:46:38

在Java Stream中,可以使用Collectors.groupingBy()方法來(lái)對(duì)元素進(jìn)行分組,然后通過(guò)Collectors.counting()方法統(tǒng)計(jì)每個(gè)分組中元素的數(shù)量。

以下是一個(gè)示例代碼,演示如何對(duì)一個(gè)包含數(shù)字的Stream進(jìn)行分組并統(tǒng)計(jì)元素?cái)?shù)量:

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));
    }
}

在上面的例子中,我們首先將數(shù)字列表轉(zhuǎn)換為一個(gè)Stream,然后使用groupingBy()方法根據(jù)數(shù)字進(jìn)行分組,然后通過(guò)counting()方法統(tǒng)計(jì)每個(gè)分組中元素的數(shù)量。最后,我們將結(jié)果打印出來(lái),得到如下輸出:

1 : 3
2 : 2
3 : 2
4 : 2
5 : 1

這表明數(shù)字1出現(xiàn)了3次,數(shù)字2、3、4分別出現(xiàn)了2次,數(shù)字5出現(xiàn)了1次。

0