首页 > 解决方案 > 如何在不知道数组大小的情况下初始化数组

问题描述

我想编写一个方法,该方法返回一个数组,该数组仅包含input大于或等于的数字n

到目前为止,我有以下内容:

public static int[] filter(int[] input, int n) {

    int counter = 0;
    int[] res = new int[input.length];

    for(int i = 0; i < input.length; i++) {
        if(input[i] >= n) {
            res[counter++] = input[i];
        }
    }   
    return res;
}

我知道这int[] res = new int[input.length]是不正确的,因为它使用输入数组的大小初始化数组,但我无法让它工作。

结果, forint[] input = {4,3,2,5,1,6}int n = 3我得到4 3 5 6 0 0.

我认为它与计数器有关,我尝试过int[] res = new int[counter] ,但因为counter = 0它的长度为 0。

res我的问题:当我不知道它有多大时,如何初始化数组?

标签: javaarrays

解决方案


不要创建数组;让 JDK 为您完成:

public static int[] filter(int[] input, int n) {
    return Arrays.stream(input)
        .filter(i -> i >= n)
        .toArray();
}

它的代码也少了很多。


推荐阅读