System.arraycopy é traduzida internamente pelo Java para uma instrução de cópia de memória do próprio processador, portanto não é possível fazer uma cópia mais rápida que System.arraycopy.
thiagofesta
thingol:
Obrigado pela força, e valeu ai pelo puchão de orelha ai, vou parar de abrir tópico pra tudo que tenho dúvida.
alandaniel
topico já tá velho mas vou responder pra quem pesquisa no google
eu sinceramente gosto de usar os commons da apache
E
entanglement1 like
importjava.util.*;classConcatenarArrays{// Versão genérica, usar com quaisquer arrays de objetos (têm de ser do mesmo tipo)publicstatic<T>T[]concat(Class<T>klass,T[]...arrays){intlength=0;for(T[]array:arrays){length+=array.length;}@SuppressWarnings("unchecked")T[]ret=(T[])java.lang.reflect.Array.newInstance(klass,length);intdestPos=0;for(T[]array:arrays){System.arraycopy(array,0,ret,destPos,array.length);destPos+=array.length;}returnret;}// Versão especializada para o tipo primitivo intpublicstaticint[]concat(int[]...arrays){intlength=0;for(int[]array:arrays){length+=array.length;}int[]ret=newint[length];intdestPos=0;for(int[]array:arrays){System.arraycopy(array,0,ret,destPos,array.length);destPos+=array.length;}returnret;}// Versão especializada para o tipo primitivo doublepublicstaticdouble[]concat(double[]...arrays){intlength=0;for(double[]array:arrays){length+=array.length;}double[]ret=newdouble[length];intdestPos=0;for(double[]array:arrays){System.arraycopy(array,0,ret,destPos,array.length);destPos+=array.length;}returnret;}publicstaticvoidmain(String[]args){Integer[]arr1=newInteger[10];for(inti=0;i<arr1.length;++i)arr1[i]=i;Integer[]arr2=newInteger[15];for(inti=0;i<arr2.length;++i)arr2[i]=i+100;Integer[]arr3=newInteger[30];for(inti=0;i<arr3.length;++i)arr3[i]=i+1000;Integer[]arr=ConcatenarArrays.concat(Integer.class,arr1,arr2,arr3);System.out.println(arr.length);System.out.println(Arrays.asList(arr));int[]intArr=ConcatenarArrays.concat(newint[10],newint[15],newint[30]);System.out.println(intArr.length);}}