我想创建一个新的对象数组,将两个较小的数组放在一起。
它们不能为空,但大小可能为 0。
我无法在这两种方式之间进行选择:它们是等效的还是更有效的一种(例如 system.arraycopy() 复制整个块)?
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);
或者
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]
}
}
唯一的区别是代码的外观吗?
编辑:感谢链接的问题,但他们似乎有一个未解决的讨论:
it is not for native types
if : byte[], Object[], char[]真的更快吗?在所有其他情况下,将执行类型检查,这将是我的情况,因此将是等效的......不是吗?
在另一个链接的问题上,他们说the size matters a lot
,对于大于 24 的 system.arraycopy() 获胜,对于小于 10,手动 for 循环更好......
现在我真的很困惑。