![](/img/trans.png)
[英]Overwrite to old value in arraylist after added the values to other arraylist
[英]Why does the new element added into my ArrayList overwrite all previous values?
我从数据库检索值,创建一个新的Transaction Object并将其添加到ArrayList<Transaction>
,然后返回。
问题是每次returnList.add(t);
称为,而不是仅添加事务,它还将所有旧事务替换为新事务。
导致此行为的错误在哪里?
public ArrayList<Transaction> getTransactions(long intervall, Map<String, String> transactionFields) {
connect();
ArrayList<Transaction> returnList = new ArrayList<Transaction>();
Statement sta;
ZonedDateTime now = ZonedDateTime.now(ZoneOffset.UTC);
now = now.minusSeconds(intervall);
try {
sta = conn.createStatement();
String Sql = "...";
ResultSet rs = sta.executeQuery(Sql);
while (rs.next()) {
Transaction t = new Transaction(rs.getString("No"), transactionFields);
t.set("AgentName", rs.getString("cname"));
returnList.add(t);
}
} catch (SQLException e) {
...
}
disconnect();
return returnList;
}
这是Transaction类:
public class Transaction {
private Map<String, String> fields;
public Transaction(String number, Map<String, String> transactionFields) {
fields = transactionFields;
fields.put("Number", number);
}
public void set(String field, String value) {
fields.put(field, value);
}
public String get(String field) {
return fields.get(field);
}
public Map<String, String> getFieldMap() {
return fields;
}
@Override
public String toString() {
return fields.toString();
您在所有“ Transaction
实例中都使用相同的Map
。
而是每次都传递一个新的:
Transaction t = new Transaction(rs.getString("No"), new HashMap<String, String>());
或者只是在您的Transaction
类中创建Map
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.