我正在尝试为我做的哈希表做一个arraylist:
ArrayList<java.util.Hashtable<String, String>> info = new ArrayList<java.util.Hashtable<String, String>>();
这完成了工作,但后来我需要使用for循环在信息中添加一些哈希表:
java.util.Hashtable<String, String> e = new java.util.Hashtable<String, String>();
while(rs.next()){
e.clear();
for(String a:dados){
e.put(a,rs.getString(a));
}
info.add(e);
}
问题是方法添加不会将e复制到info,它只定义指向e的指针,所以当我更新e时,所有插入的元素都会获得新的e值。
有人能帮忙吗?
你的时间。
答案 0 :(得分:2)
这应该有效:
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.Map;
import java.util.List;
List<Map<String, String>> info = new ArrayList<Map<String, String>>();
while (rs.next()) {
Map<String, String> e = new Hashtable<String, String>();
e.clear();
for (String a : dados) {
e.put(a, rs.getString(a));
}
info.add(e);
}
您应该尽量避免按实现类声明集合(将它们声明为List
而不是ArrayList
,或Map
而不是Hashtable
。
答案 1 :(得分:1)
如果你在循环中每次都使用new,则不需要clear()。
java.util.Hashtable e = new java.util.Hashtable();
而(rs.next()){
e = new java.util.Hashtable();
for(String a:dados){
e.put(一个,rs.getString的(a));
}
info.add(E);
}