有 Java 编程相关的问题?

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


共 (3) 个答案

  1. # 1 楼答案

    阅读上面的@notyou评论。您应该做的是创建另一个长度增加的数组,将所有元素(从旧数组)复制到这个数组中,并告诉代码新数组(现在)就是数据数组

  2. # 2 楼答案

    没有办法做到这一点,但你可以使用LinkedList或实现你自己的解决方案(Ziakad在评论部分说这应该放在Vector类中是正确的。我只是给出了一个一般性的描述,但在问题的上下文中,这是一个很好的建议):

    public static int[] raiseSize(int[] input, int newSize) {
        int[] output = new int[newSize];
        for (int i = 0; i < input.length; i++) output[i] = input[i];
        return output;
    }
    

    用法示例:

    int foo[] = new int[3];
    foo[0] = 1; foo[1] = 2; foo[2] = 0;
    foo = raiseSize(foo, 5);
    
  3. # 3 楼答案

    想想数组是如何实现的:您“提前”指定数组的大小,然后运行时留出足够多的连续内存位置来容纳指定大小的数组。这意味着数组不能动态调整大小——你不知道数组末尾之后的下一个连续内存位置中有什么。下面是大小为6的布尔值数组的图示:

                                               
    | true  |  false | false | true | true | true (last item in the array) | ?? | ?? | ...
                                               
    |  0    |   1    |  2    |  3   |  4   | 5...
    

    旁注:它的一个有趣特性是,您可以使用以下公式计算出任何特定项的内存地址:(initial memory location) + (array index * size of each memory location)。例如,如果数组从位置100开始,并且每个位置的大小都是2,那么数组中的第一项位于位置100 + (2 * 0) = 100。索引3中的项目位于位置100 + (2 * 3) = 106。这就是为什么你可以在固定时间内访问数组中的任意位置——你可以用指针算法在任意索引中找到一个项目的位置

    TL;DR无法动态调整阵列大小