在 Java 哈希图中(已插入多个值)通过键获取特定条目的任何方法?
Any way to get a specific entry by key in a Java hashmap(having inserted multiple values)?
我有一个 Java 哈希图,其中添加了多个变量(例如):
class client {
public static int clientIdentifier;
public static String clientName;
public static String clientFamilyname;
public static String clientBirthdate;
}
主要方法内部:
client newclient = new client();
HashMap<Integer, String> clients = new HashMap<>();
clients.put(newclient.clientIdentifier,
newclient.clientName +
newclient.clientFamilyname +
newclient.clientBirthdate
其中 new client.clientIdentifier 是键,newClient.clientName/Familyname/Birthdate 已经定义。它们属于一个对象newclient,它属于class client
有没有什么方法可以只从该散列图中获取值 clientName,以便稍后比较?
寻找类似的东西:
String requiredName = clients.get(scannedID, newclient.clientName);
(我知道这是完全错误的,但只是一个想法)
非常感谢!
您需要先将Client
中的所有字段设为非静态!您希望 Client
的每个实例都有不同的 ID、姓名和生日,对吗?
不使用 HashMap<Integer, String>
,而是使用 HashMap<Integer, Client>
:
Client newclient = new Client();
HashMap<Integer, Client> clients = new HashMap<>();
clients.put(newclient.clientIdentifier, newclient);
现在你只需要做:
String requiredName = clients.get(scannedID).clientName;
但实际上,class Client
中的字段应该都是私有的,并且应该通过 getters and setters 访问。您也不应该能够重置客户端的 clientIdentifier
,因为那是地图的键。
Client
应该是这样的:
class Client {
private int clientIdentifier;
private String clientName;
private String clientFamilyname;
private String clientBirthdate;
public String getClientName() {
return clientName;
}
public void setClientName(String clientName) {
this.clientName = clientName;
}
public String getClientFamilyname() {
return clientFamilyname;
}
public void setClientFamilyname(String clientFamilyname) {
this.clientFamilyname = clientFamilyname;
}
public String getClientBirthdate() {
return clientBirthdate;
}
public void setClientBirthdate(String clientBirthdate) {
this.clientBirthdate = clientBirthdate;
}
public int getClientIdentifier() {
return clientIdentifier;
}
public Client(int clientIdentifier, String clientName, String clientFamilyname, String clientBirthdate) {
this.clientIdentifier = clientIdentifier;
this.clientName = clientName;
this.clientFamilyname = clientFamilyname;
this.clientBirthdate = clientBirthdate;
}
}
您的哈希映射代码现在如下所示:
Client newclient = new Client();
HashMap<Integer, Client> clients = new HashMap<>();
clients.put(newclient.getClientIdentifier(), newclient);
String requiredName = clients.get(scannedID).getClientName();
我会像这样将值放入哈希图中:
map.put(clientID,name+"+"+familyname+"+"+bithdate);
这样当我使用键从 Map 中获取值时,我会得到一个类似 John+Wood+1994 的字符串。
现在我可以使用子字符串轻松获取名称。
这有帮助吗?
我有一个 Java 哈希图,其中添加了多个变量(例如):
class client {
public static int clientIdentifier;
public static String clientName;
public static String clientFamilyname;
public static String clientBirthdate;
}
主要方法内部:
client newclient = new client();
HashMap<Integer, String> clients = new HashMap<>();
clients.put(newclient.clientIdentifier,
newclient.clientName +
newclient.clientFamilyname +
newclient.clientBirthdate
其中 new client.clientIdentifier 是键,newClient.clientName/Familyname/Birthdate 已经定义。它们属于一个对象newclient,它属于class client
有没有什么方法可以只从该散列图中获取值 clientName,以便稍后比较?
寻找类似的东西:
String requiredName = clients.get(scannedID, newclient.clientName);
(我知道这是完全错误的,但只是一个想法)
非常感谢!
您需要先将Client
中的所有字段设为非静态!您希望 Client
的每个实例都有不同的 ID、姓名和生日,对吗?
不使用 HashMap<Integer, String>
,而是使用 HashMap<Integer, Client>
:
Client newclient = new Client();
HashMap<Integer, Client> clients = new HashMap<>();
clients.put(newclient.clientIdentifier, newclient);
现在你只需要做:
String requiredName = clients.get(scannedID).clientName;
但实际上,class Client
中的字段应该都是私有的,并且应该通过 getters and setters 访问。您也不应该能够重置客户端的 clientIdentifier
,因为那是地图的键。
Client
应该是这样的:
class Client {
private int clientIdentifier;
private String clientName;
private String clientFamilyname;
private String clientBirthdate;
public String getClientName() {
return clientName;
}
public void setClientName(String clientName) {
this.clientName = clientName;
}
public String getClientFamilyname() {
return clientFamilyname;
}
public void setClientFamilyname(String clientFamilyname) {
this.clientFamilyname = clientFamilyname;
}
public String getClientBirthdate() {
return clientBirthdate;
}
public void setClientBirthdate(String clientBirthdate) {
this.clientBirthdate = clientBirthdate;
}
public int getClientIdentifier() {
return clientIdentifier;
}
public Client(int clientIdentifier, String clientName, String clientFamilyname, String clientBirthdate) {
this.clientIdentifier = clientIdentifier;
this.clientName = clientName;
this.clientFamilyname = clientFamilyname;
this.clientBirthdate = clientBirthdate;
}
}
您的哈希映射代码现在如下所示:
Client newclient = new Client();
HashMap<Integer, Client> clients = new HashMap<>();
clients.put(newclient.getClientIdentifier(), newclient);
String requiredName = clients.get(scannedID).getClientName();
我会像这样将值放入哈希图中:
map.put(clientID,name+"+"+familyname+"+"+bithdate);
这样当我使用键从 Map 中获取值时,我会得到一个类似 John+Wood+1994 的字符串。 现在我可以使用子字符串轻松获取名称。 这有帮助吗?