在2d数组上添加行

时间:2015-02-04 02:05:56

标签: java arrays

作业中指定的方法说:

boolean addLineSegment(int [] segment) - 如果其坐标代表有效的线段,则将一个线段添加到数据库。这应该将lineSegment数组的大小增加1并将给定的线段添加到结尾。如果添加了线段,则该方法返回true,否则返回false。输入应该是大小为4的数组。

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

public boolean addLineSegment(int[] segment) {

    if(segment.length==4 && isValid(segment[0], segment[1], segment[2], segment[4])){
        //does something that copies segment into a new row of lineSegments...
        returns true;
    }

    return false;
}

2 个答案:

答案 0 :(得分:0)

在Java中,如果要扩展基本数组,则需要分配新空间并复制整个数组。没有适当的扩展机制(因为内存中数组之后的空格不是数组的一部分)。

幸运的是,在Java中执行这项工作非常简单,因为Arrays.copyOf完全符合您的要求。您可以将大小扩大1并输入新数据。

稍微复杂一点的方法是分配比最初需要的空间更多的空间,并保留一个单独的lineCount变量。然后,您可以扩展块(lineCount == array.length时),而不是每次添加新行。

答案 1 :(得分:0)

除非将数组复制到新的大数组,否则不能通过数组执行此操作。

我建议你改用java集合.List>。