将数组插入另一个数组

时间:2017-05-11 20:59:28

标签: java arrays

编写方法将[]插入到数字[]中,存储在变量“location”中的位置。

    public boolean insertArray(int location, double a[])
    {    
        if (length != MAX_CAPACITY)
        {
            numbers[location] = a[];
            length++;
            return true;
        }
        return false;
    }

是否可以通过数组?

4 个答案:

答案 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是更好的抽象,效率几乎相同。