我是 Java 新手,正在使用对象的 ArrayList
在 Java 中编写一个小型应用程序。
Transaction trans= new Transaction();
ArrayList<Transaction> arrTrans = new ArrayList<Transaction>();
当我调试
应用程序时,我可以看到,当我向 arrayList 添加新元素时,所有之前的 arrTrans
元素都被替换为新元素。
private void add(Transaction trans){
trans.description= (String)(jTextField1.getText());
trans.type=(String) (jComboBox1.getSelectedItem());
trans.amount=(String)(jTextField2.getText());
trans.date=(String)(jTextField3.getText());
arrTrans.add(trans);
}
我认为 ArrayList 对象为要添加到列表中的每个新元素添加新索引,并且从不修改以前的元素。我的代码有什么问题吗?
最佳答案
您始终添加相同的 Transaction
对象,并且仅更新其内容。前面的元素不会被替换,它们实际上都是相同的元素。
如果将对象添加到ArrayList
,则不会自动创建该对象的副本。您每次都必须实例化一个 new Transaction()
,填充其字段,并将其添加到 ArrayList
中。
您的代码可能如下所示:
private void add() {
Transaction trans = new Transaction();
trans.description = (String) jTextField1.getText();
trans.type = (String) jComboBox1.getSelectedItem();
trans.amount = (String) jTextField2.getText();
trans.date = (String) jTextField3.getText();
arrTrans.add(trans);
}
关于java - ArrayList 元素替换为新条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25337829/