Как сохранить несколько значений в hashmap относительно уникальных ключей - PullRequest
0 голосов
/ 14 июня 2011

Привет, мне нужно проверить значения базы данных с помощью отображаемых в пользовательском интерфейсе значений, поэтому я использую Watij в качестве инструмента автоматизации. Проблема возникает, когда мне нужно сохранить значения базы данных в hashmap. Предположим, что база данных имеет 3 поля: Имя, Электронная почта и Адрес. И после запуска запроса извлеченные строки равны 10. Я принимаю значения полей в качестве ключа в hashmap, а извлеченные строки - в качестве значений.

Я не могу сохранить значения в hashmap. Когда я использовал hashmap, значения были переопределены, и, наконец, я всегда получал отдельные значения для соответствующих ключей. Я попытался объявить хэш-карту, имеющую два параметра как строку и строку [], но я не смог прочитать окончательные значения. Кто-нибудь может помочь, так как я не эксперт по Java. Спасибо.

Ответы [ 4 ]

1 голос
/ 14 июня 2011

Вы можете сделать карту как 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[]>, но он не очень полезен. Идея Java с запросом БД заключается в создании объекта для инкапсуляции каждой записи.

1 голос
/ 14 июня 2011

Что ж, на карте ключи должны быть уникальными, поэтому, если вы продолжите добавлять (email, blabla @ hotmail.com), и он уже имел (email, nana @ gmail.com), вы просто переопределите первый. , Если вам нужен просто список электронных писем, адресов и имен, не лучше ли создать класс с именем person или что-то еще и добавить их в список?

Как человек (имя, адрес электронной почты, адрес), а затем добавить это в список.

1 голос
/ 14 июня 2011

при сохранении объекта в hashmap вы можете использовать хеш-код этого объекта в качестве ключа, а затем можете сохранить сам объект в качестве значения, но убедитесь, что вы правильно внедрили метод hasCode() и equals, как вы знаете, hashmap внутренне использовал hashcode() и метод equals для хранения данных.

Теперь при реализации метода хеширования или равенства можно использовать любой атрибут (столбец этой строки), который, как вы думаете, уникально идентифицирует эту строку.

И, кроме того, с точки зрения производительности это будет лучшим подходом.

1 голос
/ 14 июня 2011

Где вы объявили строку?Вы должны будете объявить это внутри цикла (где вы просматриваете свой набор результатов).Если вы не создаете новый объект внутри цикла, ссылка на ту же строку будет сохранена во всех значениях hashmap, и вы получите одно значение в вашем hashmap.Если бы код был также упомянут здесь, было бы легко точно определить точную проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...