问题描述
||
嗨,我必须使用UI显示的值来验证数据库值,因此我将Watij用作自动化工具。
当我必须将数据库值存储到哈希图中时,就会出现问题。
假设数据库有3个字段,名称,电子邮件和地址。
触发查询后,获取的行为10。
我将字段值作为哈希图中的键,并将检索到的行作为值。
我无法将值存储在哈希图中。当我使用哈希图时,值被覆盖,最后我总是得到各个键的单个值。我试图声明具有两个参数的哈希图,分别为字符串和字符串[],但我无法读取最终值。
任何人都可以帮忙,因为我不是Java专家。
谢谢。
解决方法
您在哪里声明了字符串?您将必须在循环(在结果集中循环)内声明它。如果您不在循环内创建新对象,则相同字符串的引用将存储在哈希图中的所有值中,并且您将在哈希图中获得单个值。如果此处还提到了代码,则可以很容易地找到确切的问题。
, 在将对象存储在哈希图中时,可以将该对象的哈希码用作键,然后可以将对象本身保存为值,但是请确保正确实现
hasCode()
和equals
方法,如您所知,hashmap内部使用了hashcode()
和\'等于用于存储数据的方法。
现在,当实现哈希码或equals方法时,您可以使用您认为唯一标识该行的任何属性(该行的列)。
而且,在性能方面,这将是更好的方法。
, 您可以像HashMap<String,Data>
这样创建一个映射,其中第一个参数是键(我想是String
,可以使用所需的值),而Data
是一个包含键的数据值的类。 Data
可能是:
public class Data {
private String name;
private String address;
private String email;
...
}
您可以使用map.put(key,new Data(...))
将对象添加到地图。
一个更简单的方法是在类似于HashMap<String,String[]>
的地图中使用数组,但不是很有用。具有DB查询的Java思想是创建对象以封装每条记录。
, 在地图中,键必须是唯一的,因此,如果您继续添加(email,blabla @ hotmail.com)并且它已经具有(email,nana @ gmail.com),则您将覆盖第一个。如果您只需要电子邮件,地址和姓名的列表,那么最好创建一个名为person或诸如此类的类并将其添加到列表中会更好吗?
像人员(姓名,电子邮件,地址)一样,然后将其添加到列表中。