2017-05-11 13 views
1

変数 "location"に格納されている位置に[]を挿入するためのメソッドを書く。配列を別の配列に挿入する

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

アレイを通過することはできますか?

+1

「数値」の種類は? – shmosel

+0

ループを使用します。あなたは 'arraycopy'を使うことができますが、私はこれが運動目的であると思います。 – Yoda

+0

質問のパラメータがわからないとき、どうすればよいでしょうか? – shmosel

答えて

4

あなたは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] 
+0

これは、ある配列の内容を別の配列にコピーするだけです(マージ)...私は、配列(配列への参照)を別の配列(つまり2次元配列)の特定の場所に挿入する方法を質問します。 –

+0

@カルリトスあなたはそれを下げて投票するのですか?あなたは 'System.arraycopy'で多くのことをすることができます私の例をチェック –

1

ArrayListとして など、リストの代わりに配列を使用している特定の理由はありますか?

java.util.Listを使用している場合は、​​を使用してください。

アレイを使用している場合は、アレイの割り当てとコピーを自分で実行する必要があります。ここでのOpenJDKからArrayList.addAll(int, Collection)example implementationです:

// 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; 
} 
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は、ほぼ同じ効率でより優れた抽象化です。

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; 
}