为数组添加值?

时间:2012-10-16 02:25:12

标签: java arrays

我刚刚创建了一个比我之前的数组大一个的新数组,我想将第一个数组中的值复制到新数组中。如何将新值添加到新数组的最后一个索引?

这是我尝试过的:

public void addTime(double newTime) {
    if (numOfTimes == times.length)
        increaseSize();
    times[numOfTimes] = newTime;
}

7 个答案:

答案 0 :(得分:1)

我建议尝试使用java.util.List之类的对象而不是原始数组。然后你可以这样做:  times.add(newTime)并为您处理大小调整。

答案 1 :(得分:1)

为什么不使用System.arraycopy函数。

increaseSIze()
{
   double [] temp = new double[times.lebgth+1];
   System.arrayCopy(times,0,temp,0,times.length);
   times=temp;
}

之后你有时间数组增加了1个。

答案 2 :(得分:0)

要为您可以执行的最后一个索引设置新值

times[times.length - 1] = newTime;

答案 3 :(得分:0)

数组索引来自0..n-1

array[array.length - 1]将解决数组末尾的值。

答案 4 :(得分:0)

数组的最后一项始终位于myArray.length - 1。在您的情况下,times数组中的最后一个元素是times[times.length - 1]。有关数组的更多信息,请查看http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

但更重要的是:如果您尝试更改阵列的容量,则很可能使用错误的数据结构来完成作业。如果您需要类似数组的索引来访问元素,请查看Oracle的Introduction to Collections(尤其是ArrayList类。)

答案 5 :(得分:0)

为什么你不想要这个要求的java.util.ArrayList?实际上,不需要管理它的大小。你只需这样做:

 List<Double> list = new ArrayList<Double>();
 list.add(newTime);

答案 6 :(得分:0)

如果使用数组是一个约束,请考虑Arrays.copyOf

import java.util.Arrays;
...
private void increaseSize() {
   // Allocate new array with an extra trailing element with value 0.0d
   this.times = Arrays.copyOf( times, times.length + 1 );
}
...

请注意,如果您经常以不可预测的方式进行此类型的数组管理,则可能需要考虑其中一个Java Collection Framework类,例如ArrayListArrayList的设计目标之一是管理大小管理,就像JVM本身管理内存管理一样。

我开发了一个在线可执行示例here