1

タイプ Double の二重リンク リストを作成していますが、同じタイプの別のリンク リストをどのように宣言しても、常に最初のリストを参照します。

そのような:

LinkedList<LinkedList<Double>> trainingData = new LinkedList<LinkedList<Double>>();
LinkedList<LinkedList<Double>> newData = new LinkedList<LinkedList<Double>>();

trainingData に何かを追加します...

newData = trainingData;  

次に、この割り当て後に trainingData に加えた変更はすべて、newData で変更されます。また、newData のコンストラクターで trainingData を渡し、ネストされたループを使用して trainingData のデータを newData に割り当てようとしましたが、newData が trainingData を参照する場合と同じ結果が得られます。

4

2 に答える 2

7

リスト内で繰り返し、各要素を新しいリストにコピー/クローンする必要があります。

あなたが直面している問題は、LinkedList が含まれる要素への内部参照のみを保持することです。リストaをリストbにコピーすると、実際にはリスト a 内の参照がリスト b にコピーされるため、元のリストの変更は新しくコピーされたリストに反映されます。

于 2009-05-17T00:08:07.873 に答える
1

これは、その内容ではなく、リストへの参照をコピーするだけです。

newData = trainingData;

必要と思われるのは、次のようなディープコピーです

newData = new LinkedList();
for(LinkedList ll: trainingData)
  newData.add(ll.clone());
于 2009-05-17T05:24:11.610 に答える