当前位置: 首页 > 知识库问答 >
问题:

如何使用Java流从整数数组中移除值?[关闭]

鞠嘉誉
2023-03-14

我有一个整数数组,我需要使用java stream、filter和Map移除其中的一些值(由变量val表示)。

public int[] removeElement(int[] nums, int val) {
        return  Arrays.stream(nums)
            .filter(i -> i != val)
            .toArray();
    }
    null

共有1个答案

平庆
2023-03-14

如果您想要相同的方法,只是不需要流,那么它就在这里

public int[] removeElement(int[] nums, int val) {
    int newArrayLength = 0;
    for (int element : nums) {
        if (val != element) {
           newArrayLength++;
        }
    }
    int[] newArray = new int[newArrayLength];
    int newArrayIndex = 0;
    for (int element : nums) {
       if (element != element) {
            newArray[newArrayIndex] = element;
            newArrayIndex++;
       }
    }
    return newArray;
}

但它会创建一个新数组。带有流的代码也会创建一个新数组。而且在Java中没有办法改变数组的长度。

 类似资料:
  • 我很难理解为什么这段代码返回一个Object[]而不是int[]("line"是我从一个看起来像"1 2 3 4 5"的文件中读取的字符串)。 我希望你能帮我理解,谢谢!

  • 可能是初学者提出的一个非常明显的问题: 如果我有下面的数组... ...我可以不使用for循环来匹配和吗?如果是,怎么做?我将有一个很大的数组,所以运行for循环似乎非常繁重。 谢了!

  • 我知道有人问过这个问题,但我不能使用它的解决方案来做我想做的事情,我的问题是每次我从函数调用并输入一个Id,它总是告诉我Id被删除,即使我输入了一个从未输入的Id,它仍然打印相同的任何提示和帮助,将不胜感激:)注意:我不想在其中使用ArrayList这里是我的代码:

  • 我有一个问题编码这个: 编写一个名为的静态方法,该方法将整数数组作为输入,并返回一个新的整数数组,其中所有重复项都被删除。例如,如果输入数组具有元素{4,3,3,4,5,2,4},则结果数组应为{4,3,5,2} 这是我目前所做的

  • 我需要找到给定数组的中位数,并限制只能使用堆。 我知道用于查找中位数的线性选择算法。以下方法(仅基于堆)是否正确? 从给定数组构建一个max-heap() 从堆的叶子( )构建一个max-heap( ) 从堆的内部节点( )构建一个min-heap( ) 如果是奇数返回 否则返回