Chcę utworzyć nową tablicę obiektów składającą dwie mniejsze tablice.
Nie mogą być zerowe, ale rozmiar może wynosić 0.
Nie mogę wybrać między tymi dwoma sposobami: czy są one równoważne, czy też jeden bardziej wydajny (na przykład system.arraycopy () kopiuje całe fragmenty)?
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
System.arraycopy(publicThings, 0, things, 0, publicThings.length);
System.arraycopy(privateThings, 0, things, publicThings.length, privateThings.length);
lub
MyObject[] things = new MyObject[publicThings.length+privateThings.length];
for (int i = 0; i < things.length; i++) {
if (i<publicThings.length){
things[i] = publicThings[i]
} else {
things[i] = privateThings[i-publicThings.length]
}
}
Czy jedyną różnicą jest wygląd kodu?
EDYCJA: dziękuję za powiązane pytanie, ale wydaje się, że mają nierozwiązaną dyskusję:
Czy jest to naprawdę szybsze, jeśli it is not for native types: bajt [], obiekt [], znak []? we wszystkich innych przypadkach wykonywana jest kontrola typu, co byłoby moim przypadkiem, a więc byłoby równoważne ... nie?
W innym powiązanym pytaniu mówią, że the size matters a lotdla rozmiaru> 24 wygrywa system.arraycopy (), dla mniejszych niż 10, ręczna pętla jest lepsza ...
Teraz jestem naprawdę zdezorientowany.



arraycopy()jest rodzimym połączeniem, które z pewnością jest szybsze.