0

2 つの arraylist を 1 つの新しい arraylist にマージし、リストを反復処理したいと考えています。新しい配列リストに対してアクションを実行する前に、いくつかの値を -1 倍したいと考えています。ただし、問題は、 addAll() を使用すると、古い配列リストも複数になることです。

public Polynoom subtract (Polynoom that) {
    Polynoom subtract = new Polynoom(); 
    subtract.termen.addAll(that.termen);
    for (int i = 0; i < subtract.termen.size(); i++) {
        subtract.termen.get(i).coef = subtract.termen.get(i).coef * -1; 
    }
    subtract.termen.addAll(this.termen);
    Collections.sort(subtract.termen);
    subtract.removeDoubles(); 
    return subtract; 

}

私の Polynoom クラスは次のようになります。

   class Polynoom implements PolynoomInterface {


        ArrayList<Paar> termen = new ArrayList<Paar>(); 

        Polynoom() {
            termen = new ArrayList<Paar>();
        }
}

問題は (私が思うに): addAll() を使用すると、新しいコピーではなく REFERENCES が作成されるため、要素を変更すると両方が変更されることです。この問題を克服する良い方法は何ですか?

もちろん、Polynoom の代わりに新しいペアを作成して、このペアを新しい Polynoom に追加することもできますが、それは本当にいいコードだとは思いません。誰かがより良いアイデアを持っていますか?

4

2 に答える 2