logo

Java で 2 つの配列をマージする方法

Java で 2 つの配列を結合することは、2 つの配列を 1 つの配列オブジェクト内で連結または結合することに似ています。新しくマージされた配列内で配列要素が元の順序を維持するように、2 つの配列をマージする必要があります。新しくマージされた配列では、最初の配列の要素が 2 番目の配列の要素よりも前に配置されます。 例えば:

 int[] arr1={1, 2, 3, 4, 5, 6}; //first array int[] arr2={7, 8, 9, 0}; //second array int[] arr3={1, 2, 3, 4, 5, 6, 7, 8, 9, 0} //resultant array 

2 つの配列を結合するには次の方法があります。

  • ジャワ 配列コピー() 方法
  • 使うことなく 配列コピー() 方法
  • ジャワ コレクション
  • ジャワ ストリーム API

Java の arraycopy() メソッド

ジャワ 配列コピー() の方法です システム 所属するクラス java.lang パッケージ。指定されたソース配列から宛先配列の指定された位置に配列をコピーします。コピーされる要素の数は、長さ引数と同じです。

構文:

 public static void arraycopy(Object source, int source_position, Object destination, int destination_position, int length) 

パラメーター

int を文字列に変換する
    ソース: ソース配列です。ソースの位置: ソース配列の開始点。行き先: 宛先配列です。目的地の位置: 宛先配列内の開始位置。長さ: コピーする配列要素の数

投げる NullPointerException ソース配列または宛先配列が null の場合。それも投げます ArrayIndexOutOfBoundsException の場合 :

    ソースの位置または 目的地の位置 または長さが負の値です。ソース位置+長さソース配列の長さより大きい、または 目的地の位置+長さ は宛先配列の長さよりも大きくなります。

arraycopy() メソッドの例

次の例では、2 つの整数配列を作成しました。 最初の配列 そして 秒配列 。 2 つの配列をマージするために、その長さを見つけて、それぞれ fal 変数と sal 変数に格納します。その後、新しい整数配列を作成します 結果 両方の配列の長さの合計を格納します。ここで、次を使用して、両方の配列の各要素を結果配列にコピーします。 配列コピー() 関数。

文字を文字列Javaに変換します
 import java.util.Arrays; public class MergeArrayExample1 { public static void main(String[] args) { int[] firstArray = {23,45,12,78,4,90,1}; //source array int[] secondArray = {77,11,45,88,32,56,3}; //destination array int fal = firstArray.length; //determines length of firstArray int sal = secondArray.length; //determines length of secondArray int[] result = new int[fal + sal]; //resultant array of size first array and second array System.arraycopy(firstArray, 0, result, 0, fal); System.arraycopy(secondArray, 0, result, fal, sal); System.out.println(Arrays.toString(result)); //prints the resultant array } } 

出力:

 [23, 45, 12, 78, 4, 90, 1, 77, 11, 45, 88, 32, 56, 3] 

soure_array、destination、dest_position、source location、length を指定した別の例を見てみましょう。指定された位置と長さに応じて配列をマージできます。

 import java.lang.*; public class MergeArrayExample2 { public static void main(String[] args) { int firstArray[] = { 11,22,33,44,55,98,76,54,60}; int secondArray[] = {66,77,88,99,22,67,21,90,80,70}; int source_arr[], sourcePos, dest_arr[], destPos, len; source_arr = firstArray; dest_arr = secondArray; sourcePos = 2; destPos = 4; len = 3; // Print elements of source System.out.print(&apos;source_array : &apos;); for (int i = 0; i <firstarray.length; i++) system.out.print(firstarray[i] + ' '); system.out.println(''); system.out.println('sourcepos : sourcepos); print elements of destination system.out.print('dest_array for (int i="0;" < secondarray.length; system.out.print(secondarray[i] system.out.println('destpos destpos); system.out.println('len len); invoking arraycopy() method system.arraycopy(source_arr, sourcepos, dest_arr,destpos, after system.out.print('resultant array } pre> <p> <strong>Output:</strong> </p> <pre> source_array: 11 22 33 44 55 98 76 54 60 sourcePos: 2 dest_array: 66 77 88 99 22 67 21 90 80 70 destPos: 4 len: 3 Resultant array: 66 77 88 99 33 44 55 90 80 70 </pre> <h2>Without using arraycopy() method</h2> <p> <strong>Example of merging two arrays</strong> </p> <p>In the following example, we have initialized two arrays firstArray and secondArray of integer type. Manually copy the each element of both arrays to mergedArray and convert that array into String by using toString() method of Array class.</p> <pre> public class MergeArrayExample3 { public static void main(String[] args) { int[] firstArray = {56,78,90,32,67,12}; //initialized array int[] secondArray = {11,14,9,5,2,23,15}; int length = firstArray.length + secondArray.length; //add the length of firstArray into secondArray int[] mergedArray = new int[length]; //resultant array int pos = 0; for (int element : firstArray) //copying elements of secondArray using for-each loop { mergedArray[pos] = element; pos++; //increases position by 1 } for (int element : secondArray) //copying elements of firstArray using for-each loop { mergedArray[pos] = element; pos++; } System.out.println(Arrays.toString(mergedArray)); //prints the resultant array } } </pre> <p> <strong>Output:</strong> </p> <pre> [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] </pre> <h2>Using Collections</h2> <p> <strong>Example of merging two arrays in Java</strong> </p> <p>In the following example, we have initialized two arrays str1 and str2 of String type. After that we have created a list view of str1 by using the Arrays.asList() method. Now we have created the list view of str2 and added all the elements of str2 into the list. Again perform conversion from list to array and store the resultant array into str3 variable.</p> <pre> import java.util.*; public class MergeArrayExample4 { public static void main(String args[]) { String str1[] = { &apos;A&apos;, &apos;E&apos;, &apos;I&apos; }; //source array String str2[] = { &apos;O&apos;, &apos;U&apos; }; //destination array List list = new ArrayList(Arrays.asList(str1)); //returns a list view of an array //returns a list view of str2 and adds all elements of str2 into list list.addAll(Arrays.asList(str2)); Object[] str3 = list.toArray(); //converting list to array System.out.println(Arrays.toString(str3)); //prints the resultant array } } </pre> <p> <strong>Output:</strong> </p> <pre> [A, E, I, O, U] </pre> <h2>Java Stream API</h2> <p> <strong>Stream.of() method</strong> </p> <p>The <strong>Stream.of()</strong> method of Stream interface returns a sequential ordered stream whose elements are the values.</p> <p> <strong>Syntax</strong> </p> <pre> static Stream of(T....values) </pre> <p>Where M <strong>T</strong> is the type of stream elements. The method accepts <strong>values</strong> (elements of the new stream).</p> <p> <strong>flatMap() method</strong> </p> <p>The <strong>flatMap()</strong> method is the method of Stream interface. It returns a stream consisting of the result.</p> <p> <strong>Syntax</strong> </p> <pre> Stream flatMap(Function<? Super T, ? extends Stream> mapper) </pre> <p>Where <strong>R</strong> is the element type of new stream. The method accepts a <strong>mapper</strong> (a function to apply to each element which produces a stream of new values) as a parameter.</p> <p> <strong>toArray() method</strong> </p> <p>The <strong>toArray()</strong> method of Stream interface returns an array containing the elements of the stream.</p> <p> <strong>Syntax</strong> </p> <pre> Object[] toArray() </pre> <p> <strong>Example of merging two arrays using Stream API</strong> </p> <pre> import java.util.stream.Stream; import java.util.Arrays; import java.io.*; public class MergeArrayExample5 { // function to merge two arrays public static Object[] mergeArray(T[] arr1, T[] arr2) { return Stream.of(arr1, arr2).flatMap(Stream::of).toArray(); } public static void main (String[] args) { Integer[] firstArray = new Integer[]{13,12,11,6,9,3}; //source array Integer[] secondArray = new Integer[]{78,34,56,67,2,11,7}; //destination array Object[] mergedArray = mergeArray(firstArray,secondArray); //merged array System.out.println(&apos;Merged array: &apos;+ Arrays.toString(mergedArray)); } } </pre> <p> <strong>Output:</strong> </p> <pre> Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7] </pre> <hr></firstarray.length;>

arraycopy() メソッドを使用しない場合

2 つの配列を結合する例

次の例では、整数型の 2 つの配列 firstArray と SecondArray を初期化しています。両方の配列の各要素を手動でmergedArrayにコピーし、ArrayクラスのtoString()メソッドを使用してその配列をStringに変換します。

 public class MergeArrayExample3 { public static void main(String[] args) { int[] firstArray = {56,78,90,32,67,12}; //initialized array int[] secondArray = {11,14,9,5,2,23,15}; int length = firstArray.length + secondArray.length; //add the length of firstArray into secondArray int[] mergedArray = new int[length]; //resultant array int pos = 0; for (int element : firstArray) //copying elements of secondArray using for-each loop { mergedArray[pos] = element; pos++; //increases position by 1 } for (int element : secondArray) //copying elements of firstArray using for-each loop { mergedArray[pos] = element; pos++; } System.out.println(Arrays.toString(mergedArray)); //prints the resultant array } } 

出力:

 [56, 78, 90, 32, 67, 12, 11, 14, 9, 5, 2, 23, 15] 

コレクションの使用

Java で 2 つの配列をマージする例

文字列配列

次の例では、String 型の 2 つの配列 str1 と str2 を初期化しています。その後、Arrays.asList() メソッドを使用して str1 のリスト ビューを作成しました。これで、str2 のリスト ビューが作成され、str2 のすべての要素がリストに追加されました。再度、リストから配列への変換を実行し、結果の配列を str3 変数に格納します。

 import java.util.*; public class MergeArrayExample4 { public static void main(String args[]) { String str1[] = { &apos;A&apos;, &apos;E&apos;, &apos;I&apos; }; //source array String str2[] = { &apos;O&apos;, &apos;U&apos; }; //destination array List list = new ArrayList(Arrays.asList(str1)); //returns a list view of an array //returns a list view of str2 and adds all elements of str2 into list list.addAll(Arrays.asList(str2)); Object[] str3 = list.toArray(); //converting list to array System.out.println(Arrays.toString(str3)); //prints the resultant array } } 

出力:

 [A, E, I, O, U] 

JavaストリームAPI

Stream.of() メソッド

Stream.of() Stream インターフェイスのメソッドは、要素が値である順次順序付けされたストリームを返します。

構文

 static Stream of(T....values) 

どこでM T ストリーム要素のタイプです。メソッドは受け入れます 価値観 (新しいストリームの要素)。

flatMap() メソッド

JavaScript サンプルコードの例

flatMap() Method は Stream インターフェースのメソッドです。結果から構成されるストリームを返します。

構文

 Stream flatMap(Function<? Super T, ? extends Stream> mapper) 

どこ R 新しいストリームの要素タイプです。このメソッドは、 マッパー (新しい値のストリームを生成する各要素に適用する関数) をパラメーターとして使用します。

toArray() メソッド

toArray() Stream インターフェイスのメソッドは、ストリームの要素を含む配列を返します。

構文

 Object[] toArray() 

Stream APIを使用して2つの配列を結合する例

 import java.util.stream.Stream; import java.util.Arrays; import java.io.*; public class MergeArrayExample5 { // function to merge two arrays public static Object[] mergeArray(T[] arr1, T[] arr2) { return Stream.of(arr1, arr2).flatMap(Stream::of).toArray(); } public static void main (String[] args) { Integer[] firstArray = new Integer[]{13,12,11,6,9,3}; //source array Integer[] secondArray = new Integer[]{78,34,56,67,2,11,7}; //destination array Object[] mergedArray = mergeArray(firstArray,secondArray); //merged array System.out.println(&apos;Merged array: &apos;+ Arrays.toString(mergedArray)); } } 

出力:

 Merged array: [13, 12, 11, 6, 9, 3, 78, 34, 56, 67, 2, 11, 7]