在 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 的字符串。 现在我可以使用子字符串轻松获取名称。 这有帮助吗?