Сравнение Java HashMap <String, List <String>> () - PullRequest
5 голосов
/ 19 октября 2011

Мне интересно, как лучше сравнить эти два HashMaps. Я хочу проверить, если они одинаковы, а если нет, то в чем разница. Если это имеет значение, то мне интересно, что 2-й имеет / не имеет, что имеет первый хэш-карта Мне нужно знать, есть ли у одного ключ, а у другого нет, а также о различиях в списке значений на ключ Я надеюсь, что есть простой способ отобразить это, но не уверен. Базовый пример:

    HashMap<String, List<String>> hmOne = new HashMap<String, List<String>>();
    List<String>l1 = new ArrayList<String>();

    l1.add("one");
    l1.add("two");
    l1.add("three");
    l1.add("four");
    l1.add("five");
    hmOne.put("firstkey", l1);
    l1 = new ArrayList<String>();

    l1.add("1");
    l1.add("2");
    l1.add("3");
    l1.add("4");
    l1.add("5");
    hmOne.put("secondkey", l1);

    HashMap<String, List<String>> hmTwo = new HashMap<String, List<String>>();
    List<String>l2 = new ArrayList<String>();
    l2.add("one");
    l2.add("two");
    l2.add("four");
    l2.add("five");
    hmTwo.put("firstkey", l2);
    l2 = new ArrayList<String>();

    l2.add("1");
    l2.add("3");
    l2.add("4");
    l2.add("5");
    hmTwo.put("secondkey", l2);

Спасибо за любую помощь.

Ответы [ 4 ]

6 голосов
/ 19 октября 2011
2 голосов
/ 19 октября 2011

HashMap.equals скажет вам, если они идентичны (те же ключи и значения), но остальное вам придется свернуть самостоятельно.

Вам нужно будет перебрать keyset() одного HashMap, найти его в keySet() другого и, если он найден, сравнить значения.

Затем вам придется сделать обратное, ища ключи во втором, которых нет в первом. Вероятно, вы можете использовать Set методы для этого.

0 голосов
/ 19 октября 2011

Вверху моей головы, вы можете сначала использовать HashMap.equals (), чтобы узнать, отличаются ли они, а затем получить набор ключей каждого хеш-карты и сравнить их:

Какой самый быстрый способ сравнить два набора в Java?

Затем, как только вы получите различия в ключах, вы можете повторить процесс для ваших коллекций значений.

0 голосов
/ 19 октября 2011

Вы знаете, что метод Map .equals () скажет вам, равны ли две Карты, верно?

Если они не равны, вам придется разобрать их обоих и выяснить различия самостоятельно.

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