如何在java中的数组内设置哈希表的真实副本?
我正在尝试为此做一个哈希表的数组列表:
ArrayList<java.util.Hashtable<String, String>> info = new ArrayList<java.util.Hashtable<String, String>>();
这完成了工作,但后来我需要使用 for 循环在 info 中添加一些哈希表:
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);
}
问题是 add 方法不会将 e 复制到 info,它只定义指向 e 的指针,因此当我更新 e 时,所有插入的元素都会获得新的 e 值。
有人可以提供一些帮助吗?
谢谢您的宝贵时间。
I'm trying to do a arraylist of a hashtable for that i did:
ArrayList<java.util.Hashtable<String, String>> info = new ArrayList<java.util.Hashtable<String, String>>();
this did the job but later i needed to add some hashtables inside info using a for cycle:
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);
}
The problem is that method add doesnt copy e to info, it only define a pointer to e so when i update e all inserted elements gets the new e values.
Can anyone give some help ?
thx for your time.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这应该有效:
您应该尝试避免通过其实现类声明集合(将它们声明为
List
而不是ArrayList
,或Map
而不是 <代码>哈希表)。This should work:
You should try to avoid declaring collections by their implementation class (declare them as
List
instead ofArrayList
, orMap
instead ofHashtable
).如果每次在循环内使用 new ,则不需要 clear() 。
java.util.Hashtable e = new java.util.Hashtable();
while(rs.next()){
e = new java.util.Hashtable();
for(字符串a:dados){
e.put(a,rs.getString(a));
}
信息.add(e);
}
Don't need the clear() if you are using new everytime inside the loop.
java.util.Hashtable e = new java.util.Hashtable();
while(rs.next()){
e = new java.util.Hashtable();
for(String a:dados){
e.put(a,rs.getString(a));
}
info.add(e);
}