首页 > 解决方案 > 使用 Streams 从整数数组中获取偶数

问题描述

我正在尝试获取一个整数数组,从中获取所有偶数,并将这些偶数放入 ArrayList,然后返回 ArrayList。我在下面的 for 循环中编写了代码,但想基本上将这个 for 循环压缩成一个使用 java 流的语句。我尝试在底部注释掉的 return 语句中这样做,但无法弄清楚。

  public static ArrayList<Integer> evens(int[] results) {
    ArrayList<Integer> evens = new ArrayList<Integer>();
    for (int i = 0; i < results.length; i++) {
      if (results[i] % 2 == 0) {
        Integer num = Integer.valueOf(results[i]);
        evens.add(num);
      }
    }
    return evens;
    // return Arrays.stream(results).filter(i -> i % 2 ==
    // 0).collect(Collectors.toList());
  }

标签: javaarraysjava-stream

解决方案


你很亲密。

Arrays.streamint数组上返回一个IntStream. 您必须先将其转换为Stream<Integer>(via boxed()),然后才能将其收集到List<Integer>.

并且方法的返回类型应该是List<Integer>.

public static List<Integer> evens(int[] results) {
    return Arrays.stream(results)
                 .filter(i -> i % 2 == 0)
                 .boxed ()
                 .collect(Collectors.toList());
}

推荐阅读