如何将多个数组合并为一个?

时间:2015-03-22 16:01:59

标签: java arrays iteration

我应该编写一个方法,将Person的所有表兄弟作为Person对象的数组返回。一个Person对象有mother,father,children []等作为它的实例变量,我应该用这个方法找到一个人的叔叔和阿姨的所有兄弟姐妹然后他们的孩子。

    public Person[] allSiblings(){
        int a = this.mother.children.length - 1;
        Person[] siblings = new Person[a];
        for(i=0; i<siblings.length; i++){
            if(this.mother.children[i] == this)
                continue;
            else{
                siblings[i] = this.mother.children[i];
                }
        }
        return siblings;
    }

那么如何合并这些子数组并在allCousins()方法中作为一个Person数组返回。我知道使用ArrayList会更容易,但我们不允许这样做。

提前致谢。

2 个答案:

答案 0 :(得分:1)

看一看 How can I concatenate two arrays in Java? 有一些方法可以做到这一点。诀窍是使用现成的函数(如果禁止列表,则可能不允许这样做)或创建一个新的数组,其中两个原始数组的总和为长度。

答案 1 :(得分:0)

JoshOvi提到的链接很好。如果要创建自己的实现,请将ArrayUtils视为参考 -

public Object[] mergeArray(final Object[] arr1, final Object[] arr2) {
    if (arr1 == null) {
        return clone(arr2);
    }
    else if (arr2 == null) {
        return clone(arr1);
    }

    Object[] mergedArray = new Object[arr1.length+arr2.length];
    System.arraycopy(arr1, 0, mergedArray, 0, arr1.length);
    System.arraycopy(arr2, 0, mergedArray, arr1.length, arr2.length);
    return mergedArray;
}

public Object[] clone(Object[] array) {
    if (array == null) {
        return null;
    }
    return (Object[]) array.clone();
}