如何从 for 循环转换为 "filter"

How to convert to "filter" from for loop

我有一个简单的for循环 我想使用 filter

将其更改为语句
for (int lotto_num: lottos) {
    if (lotto_num == 0) {
        unknown_count++;
    }
    
    for (int win_num : win_nums) {
        if (lotto_num == win_num) {
            count ++;
        }
    }
}

可能吗?我真的不知道如何使用过滤器和流。

为了使用 Java 的 Stram API,您应该首先将 int[] 数组 win_numslottos 转换为 List<Integer> .

可以这样做:

List<Integer> win_nums_list = IntStream.of(win_nums).boxed().collect(Collectors.toList());

List<Integer> lottos_list= IntStream.of(lottos).boxed().collect(Collectors.toList());

现在我们可以使用 Stream API 来获得想要的结果。

int count = win_nums_list.stream().filter(win_num -> lottos_list.contains(win_num)).count();

int unknown_count = lottos_list.stream().filter(lotto -> lotto== 0).count();

在代码开头添加导入:

import java.util.*;