用Java加入两个数组?

Dan*_*jel 14 java

可能重复:
如何在Java中连接两个数组?

我有两个对象

HealthMessage[] healthMessages1;
HealthMessage[] healthMessages2;

HealthMessage[] healthMessagesAll;

healthMessages1 = x.getHealth( );   
healthMessages2 = y.getHealth( );
Run Code Online (Sandbox Code Playgroud)

我应该如何加入这两个对象,所以我只能返回一个:

return healthMessagesAll;
Run Code Online (Sandbox Code Playgroud)

推荐的方式是什么?

Che*_*pir 32

使用Apache commons collecion API是一个很好的方法:

healthMessagesAll = ArrayUtils.addAll(healthMessages1,healthMessages2);
Run Code Online (Sandbox Code Playgroud)

  • +1不重新发明轮子.如果你可以使用Apache Commons更优雅. (3认同)

Mat*_*eid 20

我将分配一个总长度为healthMessages1和的数组,healthMessages2并使用System.arraycopy或两个for循环来复制它们的内容.这是一个示例System.arraycopy:

public class HelloWorld {

     public static void main(String []args) {

        int[] a = new int[] { 1, 2, 3};
        int[] b = new int[] { 3, 4, 5};
        int[] r = new int[a.length + b.length];
        System.arraycopy(a, 0, r, 0, a.length);
        System.arraycopy(b, 0, r, a.length, b.length);

        // prints 1, 2, 3, 4, 5 on sep. lines
        for(int x : r) {
            System.out.println(x);
        }            
     }         
}
Run Code Online (Sandbox Code Playgroud)


Kai*_*Kai 13

这更直观地编写,您不必处理数组索引:

Collection<HealthMessage> collection = new ArrayList<HealthMessage>();
collection.addAll(Arrays.asList(healthMessages1));
collection.addAll(Arrays.asList(healthMessages2));

HealthMessage[] healthMessagesAll = collection.toArray(new HealthMessage[] {});
Run Code Online (Sandbox Code Playgroud)

..但不要问我与它相比的性能System.arraycopy.