私は3つの配列をマージする必要がある1つのクラスにデータモデルを書きました。これらの配列は固定サイズ(もちろん)を持ち、nullに初期化されています。私はこのコードを使用します。null配列をマージするJava
public static <T> T[] merge(T[]... arrays) {
int size = 0;
for (T[] array : arrays) {
size += array.length;
}
T[] merged = (T[]) Array.newInstance(arrays[0][0].getClass(), size);
int start = 0;
for (T[] array : arrays) {
System.arraycopy(array, 0,
merged, start, array.length);
start += array.length;
}
return (T[]) merged;
}
この行が正しくありません:
T[] merged = (T[]) Array.newInstance(arrays[0][0].getClass(), size);
私は私が使用しているクラス正確に必要があるが、私はNULLポインタを取得します!
を書き込むことによって、配列自体の種類を取得することができます。 – SLaks
@SLaks恐らくもっと早く、おそらく。私はそれが自分自身が問題であることを明らかにするまで無視する非効率性の「97%」の下にあると思います。しかし、私はそれがそうする方が速いことに同意します。 – corsiKa
確かに...私は 'List'インターフェースが' toArray() 'メソッドをサポートしていると信じていますが、' ArrayList'では当然速くなります。 – bdares