Tôi muốn tạo một mảng đối tượng mới kết hợp hai mảng nhỏ hơn.
Chúng không được rỗng, nhưng kích thước có thể bằng 0.
Tôi không thể chọn giữa hai cách này: chúng tương đương hay một cách hiệu quả hơn (ví dụ: system.arraycopy () sao chép toàn bộ khối)?
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);
hoặc là
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]
}
}
Sự khác biệt duy nhất là giao diện của mã?
CHỈNH SỬA: cảm ơn vì câu hỏi được liên kết, nhưng dường như họ vẫn còn một cuộc thảo luận chưa được giải quyết:
Nó có thực sự nhanh hơn không nếu it is not for native types: byte [], Object [], char []? trong tất cả các trường hợp khác, kiểm tra kiểu được thực hiện, đó sẽ là trường hợp của tôi và như vậy sẽ tương đương ... không?
Trên một câu hỏi được liên kết khác, họ nói rằng the size matters a lot, đối với kích thước> 24 system.arraycopy () thắng, đối với nhỏ hơn 10, vòng lặp hướng dẫn sử dụng sẽ tốt hơn ...
Giờ tôi thực sự bối rối.



arraycopy()là một cuộc gọi riêng, chắc chắn là nhanh hơn.