如何从 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_nums
和 lottos
转换为 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.*;
我有一个简单的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_nums
和 lottos
转换为 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.*;