将Java中的新对象与已经存在的对象合并

时间:2018-11-07 20:52:20

标签: java arrays

我想知道如何在Java中合并两个对象。我试图创建一个三等舱,但无济于事。第一个是this对象,下一个是通过方法给出的。像这样:

import java.util.Arrays;

public final class IntegerArray {
    private int[] a;

    public IntegerArray(int[] a) {
        this.a = a;
    }

    public int length() {
        return a.length;
    }

    public int getElementAt(int i) {
        return a[i];
    }

    public int sum() {
        int sum = 0;
        for(int i: a) {
            sum += i;
        }
        return sum;
    }

    public double average() {
        int i, sum = 0, armean;
        for(i = 0; i < a.length; i++) {
            sum = sum + a[i];
        }
        armean = sum / i;
        return armean;
    }

    public IntegerArray getSorted() {
        int[] b = a.clone();
        Arrays.sort(b);
        return new IntegerArray(b);
    }

    public IntegerArray contact(IntegerArray ia) {
        IntegerArray merged  = new IntegerArray(this.a);
    }

    @Override
    public String toString() {
        return a.toString();
    }


}

2 个答案:

答案 0 :(得分:1)

在合并方法中,您需要创建一个新的int[],其长度为this.a.length的大小+另一个对象的长度,使用for循环放置this.a将值放入新数组中,然后再进行另一个for循环以将合并对象的数组中的值放入其中。请注意,在添加第二个数组时,必须小心使用新数组的正确索引-必须添加第一个int数组的引用新数组项时索引的长度。然后使用此新创建的更长数组创建一个新的IntegerArray对象。

public IntegerArray merge(IntegerArray other) {
    int[] newA = new int[a.length + other.a.length];
    for (int i = 0; i < a.length; i++) {
        newA[i] = a[i];
    }
    for (int i = 0; i < other.a.length; i++) {
        // here is where you need to be careful about the index
        newA[i + a.length] = other.a[i];
    }
    return new IntegerArray(newA);
}

答案 1 :(得分:1)

在contact()方法中,您需要创建一个长度等于this.a和ia长度之和的数组,然后将this.a数组复制到该新数组中并复制ia的内容。然后,您可以创建一个新的IntegerArray,将该新数组作为构造函数的参数传递。

  int temp[] = new int[sum_of_lengths];
  // copy this.a elements into temp
  // copy ia elements into temp
  IntegerArray merged = new IntegerArray(temp);

啊-@DontKnowMuch但是击败了我几秒钟