これは簡単かもしれませんが、4 つの for ループ (null 要素をカウントして削除するために 2 つ、要素を追加するために 2 つ) を使用するか、2 つの文字列配列をマージするか、ArrayList で 2 つの for ループを使用するかを決定する必要がある状況があります。 ArrayList.toArray() を使用して ArrayList を配列に変換します。
パフォーマンスに関して、これら 2 つのアプローチに違いはありますか?
編集
互換性の問題のため、ジェネリック アプローチで ArrayList を削除する必要がありました。しかし、ここに以前のコードがあります。
List<String> newList = new ArrayList<String>();
for (String element : array1)
{
if (element != null)
{
newList.add(element);
}
}
for (String element : array2)
{
if (element != null)
{
newList.add(element);
}
}
return newList.toArray(new String[]{});
1回のループで新しいコードを書きましたが、このコードを読んでいる次の人を精神的に殺しているのではないかと思います。
String[] newArr = new String[array1.length + array2.length];
int n = 0;
for (int i = 0; i < newArr.length; i++)
{
if (i < array1.length && array1[i] != null)
{
newArr[n] = array1[i];
n++;
}
if (i >= array1.length)
{
int a = 0;
if (array1.length < array2.length)
{
a = (i - array1.length) + (array2.length - array1.length);
}
else
{
a = i - array1.length;
}
if (array2[a] != null)
{
newArr[n] = array2[a];
n++;
}
}
}
return newArr;
最後に、null 要素のチェックが必要ないことがわかったので、この単純なコードに進みました。
String[] newArr = new String[array1.length + array2.length];
System.arraycopy(array1, 0, newArr, 0, array1.length);
System.arraycopy(array2, 0, newArr, array1.length, array2.length);
return newArr;
以下の議論から、2番目の方法の方がパフォーマンスが優れていると思います。