Java 增加数组的大小
我必须完成以下工作:Java 增加数组的大小,java,arrays,Java,Arrays,我必须完成以下工作: public class TabCouples { private Couple[] tab; private final int size = 10; public TabCouples() { //some code 1 } public void add(Couple C) { //some code 2 } 其中,Couple是一个具有构造函数coupletint a,int b的类。add方法应该在向数组中添加C之前将数组的大小增加一倍。
public class TabCouples {
private Couple[] tab;
private final int size = 10;
public TabCouples()
{
//some code 1
}
public void add(Couple C)
{
//some code 2
}
其中,Couple是一个具有构造函数coupletint a,int b的类。add方法应该在向数组中添加C之前将数组的大小增加一倍。
所以我想创建一个新数组,然后在增加数组大小之前将元素复制到新数组中。如何实现这一点鉴于上述框架,您不能更改数组的大小,但可以创建一个新数组并在其上复制旧数组 关于你的方法:
public void add (Couple c){
Couple[] newTab = Arrays.copyOf(tab, tab.length +size);
tab= newTab;
// add the new element on the new array tab
}
注意:您应该像我们在另一个问题中建议的那样使用ArrayList,除非您有很好的理由这样做:。所以请不要再问同样的问题了 您有两个选择:
使用ArrayList
通过创建一个新数组并将旧数组复制到其中,您可以自己实现它。这还需要跟踪当前数组中当前使用的元素数量。基本上,您将重写ArrayList。这是一个很好的学习练习,但如果你的作业有其他目标,它可能需要比需要更多的时间
这是你的作业吗?你正在尝试实现一个ArrayList,除非它明确是你的作业,否则不要这样做。是的,这有点像家庭作业…我只需要一个技巧如何做如果你改变数组长度,为什么要使用可变数组对[]“情侣”已经是另一门课了created@lukasirides:您的问题中有答案。最后一个问题:tab=newTab是否会给出IndexOutofBond异常,因为在我的构造函数中,我将执行tab=new Couple[size]?否。在tab=newTab之后,变量tab将指向长度大小+旧tab的数组。如果在调用addc之前,不在开始时实例化tab,它将给您一个NullPointerException!这是因为您需要旧的tab length tab.length来创建newTab数组。