有 Java 编程相关的问题?

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

java我想在2d数组中添加一行

作业中指定的方法表示:

布尔addLineSegment(int[]段)-如果线段的坐标表示有效线段,则将其添加到数据库中。这将使线段数组的大小增加1,并将给定线段添加到端点。如果添加了线段,则该方法返回true,否则返回false。输入应该是大小为4的数组

我有点卡住了,因为我想在数组线段[]中添加一行,而不必重新分配它并擦除数组中以前的内容。如何保留数组的内容并向其中添加新行,以便将线段[]的内容添加到线段[]中


共 (2) 个答案

  1. # 1 楼答案

    看起来您正在尝试模拟一个ArrayList的动作!我建议使用ArrayList来管理数组列表。但是,如果只允许使用数组,恐怕除非您知道外部数组中的最大元素数,否则需要复制ArrayList类的工作方式(进行一些更改),这确实需要重新分配数组

    但是,不要担心,因为您确实可以重新分配数组,而不会丢失它的内容。在Arrays类中,有一个名为copyOf()的静态方法。这允许您创建所需大小的新数组,同时保留旧数组的内容

    让我们举个例子:

    boolean addLineSegment(int[] segment){
        if(segment is not valid)
            return false;
    
        lineSegments=Arrays.copyOf(lineSegments,lineSegments.length+1);
        lineSegments[lineSegments.length-1]=segment;
        return true;
    }
    

    这满足了将阵列的大小增加1的要求,同时仍然保留旧的元素。要使其工作,数组必须以零大小开始,然后从那时起它将增长

    这与ArrayList类的工作方式不同,因为这个类每次增加一个,而ArrayList类跟踪最后一个元素的当前索引,并从长度为10的数组开始,每次达到上限时加倍。但是,您的要求指出,每次必须将大小增加1,因此我提出的解决方案应该可以正常工作

  2. # 2 楼答案

    使用Java ArrayUtils静态方法,有许多函数可以帮助您,如:

    添加功能:

    static int[]    add(int[] array, int element) 
              Copies the given array and adds the given element at the end of the new array.
    static int[]    add(int[] array, int index, int element) 
              Inserts the specified element at the specified position in the array.
    

    删除功能:

    static int[]    remove(int[] array, int index) 
              Removes the element at the specified position from the specified array.