java - ArrayList 元素替换为新条目

标签 java arraylist

我是 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/

相关文章:

java - 尝试使用 ArrayList 的方法时出现语法错误?

java - JDBC 混合大小写表名和列名

java - 使用 Guice 注入(inject)特定实例

java - ImageLoader 缓存并显示旧图像

java - RecyclerView 不会用项目单击上的 fragment 替换详细信息 Pane

java - Java 中列表如何保存对象引用/值?

在机器人中测试时,Java webapp 代码返回路径遍历问题

java - 如何使用@csvsource更改junit参数化测试的csvparsersettings

java - 使用 Arraylist 实现邻接列表

android - 使用 rxjava2 遍历列表