首页 > 解决方案 > 如何创建一个元素少于给定数组的新数组?

问题描述

在 Java 中,当我基于一个作为参数的数组构建一个新数组时。例如,假设我想用给定数组的所有值构建一个数组,除了 sevens,所以我想取 {5,7,8,9,7,3} 并返回 {5,8,9,3 } 不修改输入数组。在 python 中,这将非常简单,我会做这样的事情:

def no7s(x):
   y=[]
   for num in x:
      if num!=7:
         y+=[num]
   return y

在java中,这似乎要复杂得多。这是我尝试过的:

public static int[] no7s(int[] x){
        int size=0;
        for (int num: x){
            if (num!=7){
                size+=1;
            }
        }
        int[] y = new int[size];
        for (int i=0; i<x.length; i++){
            if (x[i]!=7){
                y[i]=x[i];
            }
        }
        return y;
    }

我对最后一个 for 循环感到困惑;我现在所拥有的不起作用,但我不确定我应该做什么。我很确定问题在于 x.length>size,但我不知道如何解释这一点。

标签: java

解决方案


在 Java 中,这个问题的答案是

这里no7s用流重写:

public static int[] no7s(int[] x) {
    return Arrays.stream(x)
        .filter(i -> i != 7)
        .toArray();
}

确保包含import java.util.Arrays;在您的 java 文件的顶部。


推荐阅读