有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在不知道数组大小的情况下初始化数组?

我有一种情况,我必须对一个输入数组应用一个条件,然后将另一个数组作为输出,根据过滤条件,该数组的大小将更小

现在的问题是我不知道过滤结果的大小,所以我不能用特定的值初始化数组。我希望数组的大小不是空的,因为我不希望它变大。长后来

一种方法是首先循环原始输入数组并设置一个计数器,然后使用该计数器长度进行另一个循环,初始化并填充该数组[]。但是,有没有办法只在一个循环中完成这项工作呢


共 (3) 个答案

  1. # 1 楼答案

    你不能。。。数组的大小在Java中总是固定的。通常不使用数组,而是在这里使用List<T>的实现——通常是ArrayList<T>,但有很多其他替代方案可用

    当然,作为最后一步,您可以从列表中创建一个数组,或者只需更改该方法的签名,以返回一个List<T>

  2. # 2 楼答案

    只需返回任何类型的列表。ArrayList很好,它不是静态的

        ArrayList<yourClass> list = new ArrayList<yourClass>();
    for (yourClass item : yourArray) 
    {
       list.add(item); 
    }
    
  3. # 3 楼答案

    如果您使用的是Java 8或更高版本,那么可以使用Stream。这是一个只提取int[]中偶数的示例

    static int[] evenFilter(int[] input) {
        return IntStream.of(input)
            .filter(i -> i % 2 == 0)
            .toArray();
    }
    
    public static void main(String args[]) throws IOException {
        int[] input = {3, 4, 22, 36, 49, 51};
        int[] output = evenFilter(input);
        System.out.println(Arrays.toString(output));
    }
    

    输出:

    [4, 22, 36]