Java 尝试将阵列大小调整两次时,运行时间较长

Java 尝试将阵列大小调整两次时,运行时间较长,java,arrays,xor,Java,Arrays,Xor,我试图用我制作的两个对象集来操作XOR。 由于某些原因,当我每次调整两次大小,然后再调整+10时,在10000个对象以上的大数组中运行此方法需要更长的时间。 这是我的调整大小功能: private void resize(){ System.out.println("resized"); Fraction temp[] = new Fraction [this.arr.length * 2]; for (int i = 0; i < si

我试图用我制作的两个对象集来操作XOR。 由于某些原因,当我每次调整两次大小,然后再调整+10时,在10000个对象以上的大数组中运行此方法需要更长的时间。 这是我的调整大小功能:

  private void resize(){
        System.out.println("resized");
        Fraction temp[] = new Fraction [this.arr.length * 2];
        for (int i = 0; i < size; i++) {
            temp[i] = arr[i];
        }
        arr = temp;
    }  
public void xor(FractionSet other){
    FractionSet xor = new FractionSet();
    for (int i = 0; i < size; i++) {
        if(other.contains(arr[i]) == -1) xor.add(arr[i]);
    }
    for (int i = 0; i < other.size; i++) {
        if(this.contains(other.arr[i]) == -1) xor.add(other.arr[i]);
    }
    this.arr = xor.arr;
    this.size = xor.size;
}
public void add(Fraction elem){
    if(this.contains(elem) != -1) return;
    else{
        if(size == arr.length) this.resize();
        arr[size] = elem;
        size++;
    }
}

有什么想法吗

当数组较大时,调整大小的方法必须复制更多的元素。因此,您的执行时间更高。出于性能方面的考虑,您应该使用For循环而不是For循环来复制数据,但我怀疑这只会起到很小的作用。还有,我不清楚你的意思。你只发布了一些片段,这并没有什么帮助。请发布[mvce]。如果我按*2调整数组大小,则运行时间比按常量+10调整大得多,无法理解为什么会发生这种情况。与问题无关,但为什么make包含返回整数,只返回布尔值!