Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 增加数组的大小_Java_Arrays - Fatal编程技术网

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数组。