Любой способ получить указанную запись c по ключу в хэш-карте Java (вставив несколько значений)? - PullRequest
0 голосов
/ 16 февраля 2020

У меня есть 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

Где новый client.clientIdentifier является ключом, и newClient.clientName / Familyname / Birthdate уже определены. Они принадлежат объекту newclient, он принадлежит классу client

Есть ли способ получить только значение clientName из этого hashmap, чтобы сравнить позже?

Looking за что-то вроде: String requiredName = clients.get(scannedID, newclient.clientName);

(я знаю, что это совершенно неправильно, но просто иметь представление)

Большое спасибо!

Ответы [ 2 ]

2 голосов
/ 16 февраля 2020

Вам нужно сначала заполнить все поля в Client non-stati c! Вы бы хотели, чтобы каждый экземпляр 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;

Но на самом деле поля класса Client должны быть частными и доступны через методы получения и установки . Вы также не должны иметь возможность сбросить 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;
    }
}

Ваш код карты ha sh теперь будет выглядеть так:

Client newclient = new Client();
HashMap<Integer, Client> clients = new HashMap<>();

clients.put(newclient.getClientIdentifier(), newclient);

String requiredName = clients.get(scannedID).getClientName();
0 голосов
/ 16 февраля 2020

Я бы поместил значение в хэш-карту примерно так:

map.put(clientID,name+"+"+familyname+"+"+bithdate);

Таким образом, когда я получаю значение из Map, используя ключ, я получу строку типа John + Wood + 1994. Теперь я могу легко получить имя с помощью подстроки. Это помогает?

...