编写方法将[]插入到数字[]中,存储在变量“location”中的位置。
public boolean insertArray(int location, double a[])
{
if (length != MAX_CAPACITY)
{
numbers[location] = a[];
length++;
return true;
}
return false;
}
是否可以通过数组?
答案 0 :(得分:5)
您可以使用System.arraycopy
:
public static void arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
以下是解决问题的简单示例:
double a[] = {1, 2, 3, 4, 5};
double b[] = {6, 7, 8};
int local = 5;
double result[] = new double[a.length + b.length];
System.arraycopy(a, 0, result, 0, a.length);
System.arraycopy(b, 0, result, local, b.length);
System.out.println(Arrays.toString(result));
<强>输出强>
[1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0]
答案 1 :(得分:2)
是的,你可以。
但是数组必须是二维Array
!例如:
public static double[][] numbers = new double[MAX_CAPACITY][];
public boolean insertArray(int location, double[] a)
{
if (length != MAX_CAPACITY)
{
numbers[location] = a;
length++;
return true;
}
return false;
}
答案 2 :(得分:1)
您是否有特定原因使用数组而不是List,例如 作为ArrayList?
如果您正在使用java.util.List,请使用List.addAll(int location, Collection a)
。
如果你正在使用数组,那么你需要自己执行数组分配和复制。这是来自OpenJDK的ArrayList.addAll(int, Collection)
// Copyright 1997-2007 Sun Microsystems, Inc.
public boolean addAll(int index, Collection<? extends E> c) {
rangeCheckForAdd(index);
Object[] a = c.toArray();
int numNew = a.length;
ensureCapacity(size + numNew); // Increments modCount
int numMoved = size - index;
if (numMoved > 0)
System.arraycopy(elementData, index, elementData, index + numNew,
numMoved);
System.arraycopy(a, 0, elementData, index, numNew);
size += numNew;
return numNew != 0;
}
:
QProcess* myProcess = new QProcess(this);
myProcess->setProcessEnvironment(myEnvVars);
myProcess->startDetached("myExePath");
答案 3 :(得分:1)
您也可以使用数组。
int[] numbers = ...
int[] a = ...
int n = numbers.length;
numbers = Arrays.copyOf(numbers, numbers.length + a.length);
System.arraycopy(a, 0, numbers, n, a.length);
一般来说,List和ArrayList是更好的抽象,效率几乎相同。