2016-07-04 19 views
0

私は3つの配列を取って1つに移動するマージメソッドを作成しようとしています。私は、Javaに非常に新たなんだと、私はこのコードを提出していますウェブサイトは、//はあなたに最初のリストが表示されます3つのint配列を1つにまとめる、Java

static int[] mergeArrays(int[] a1, int[] a2, int[] a3) { 

int[] answer = new int[a1.length + a2.length + a3.length]; 
int i,j,k; 
for (i = 0; i < a1.length; i++) 
    answer[i] = a1[i]; 

for (j = 0; j < a2.length; j++) 
    answer[i++] = a2[j]; 

for (k = 0; k < a3.length; k++) 
    answer[i++] = a3[k]; 

return answer; 
} 
+3

問題の内容が* *表示されますか?限り、私はそれが(null引数を処理する必要はありません、実際には意味がないとにかく提供)を見ることができます。 –

+0

しかし、これは、実行不可能な/アクセスできないメインメソッドの実行時に約30のエラーを引き起こします。 –

+0

あなたのメインメソッドのコードはどこですか? –

答えて

0

List<Integer> mergedArray = Arrays.asList(array1);私の誤りを指摘して非常に有用ではありません。

mergedArray.addAll(Arrays.asList(array2)); 
mergedArray.addAll(Arrays.asList(array3)); 
+0

'Arrays.asList()'メソッドは固定サイズのリストを返すので、これは動作しません。だから '.addAll()'メソッドは例外を投げるでしょう – tfosra

+0

あなたはこの[投稿]を見ることができます(http://stackoverflow.com/questions/16748030/difference-between-arrays-aslistarray-vs-new-arraylistintegerarrays-リスト) – tfosra

0

ちょうど3つの配列をマージする方法を書いてもメリットはありません。

public int[] merge(int[]... intarrays); 

低レベルのループとインデックスの操作は避けてください。Java 8が役立ちます。

public int[] merge(int[]... intarrays) { 

    return Arrays.stream(intarrays).flatMapToInt(i -> Arrays.stream(i)) 
      .toArray(); 
} 

これは、非常に簡潔でないコードの重複のない低レベルのコードを持っていないと配列が大きいまたは多数ある場合でも、並列ストリームに行われることができます。

関連する問題