作业中指定的方法说:
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;
}
答案 0 :(得分:0)
在Java中,如果要扩展基本数组,则需要分配新空间并复制整个数组。没有适当的扩展机制(因为内存中数组之后的空格不是数组的一部分)。
幸运的是,在Java中执行这项工作非常简单,因为Arrays.copyOf
完全符合您的要求。您可以将大小扩大1并输入新数据。
稍微复杂一点的方法是分配比最初需要的空间更多的空间,并保留一个单独的lineCount
变量。然后,您可以扩展块(lineCount == array.length
时),而不是每次添加新行。
答案 1 :(得分:0)
除非将数组复制到新的大数组,否则不能通过数组执行此操作。
我建议你改用java集合.List>。