J'ai écrit un modèle de données, dans une classe que j'ai besoin de fusionner 3 tableaux. Ces tableaux ont une taille fixe (bien sûr) et initialisée à null. J'utilise ce code:Merge null Arrays 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;
}
Cette ligne est incorrecte:
T[] merged = (T[]) Array.newInstance(arrays[0][0].getClass(), size);
Je dois de préciser quelle classe je l'utilise, mais je reçois un pointeur nul!
Création d'un 'ArrayList' avec la capacité appropriée serait plus rapide. – SLaks
@SLaks Marginalement plus rapide, peut-être. Je pense que cela tombe sous le "97%" des inefficacités à ignorer jusqu'à ce qu'il se révèle être un problème, personnellement. Mais je suis d'accord qu'il serait plus rapide de le faire de cette façon. – corsiKa
En effet ... Je crois que l'interface 'List' supporte une méthode' toArray() ', mais elle sera naturellement plus rapide avec un' ArrayList'. – bdares