Сравнение существующих записей данных в Java - PullRequest
1 голос
/ 20 декабря 2008

У меня есть HashMap, связывающий ключи со строками, и мне нужно сравнить некоторые строки друг с другом. Однако некоторые строки могут быть или не быть в HashMap.

Пример. Допустим, у меня есть 4 строки, которые я планирую сравнивать друг с другом, если это возможно, но только 3 из них попадают в HashMap. Как я могу сравнить имеющиеся строки, не пытаясь сравнить их со строкой, которой нет, и не выполняя кучу вложенных if и elses?

редактировать: решение Алохчи было простым и быстрым, и оно работало.

Ответы [ 2 ]

2 голосов
/ 20 декабря 2008

Цикл по коллекции .values ​​HashMap Сохраните первую запись. Сравните каждую оставшуюся запись с сохраненной. Как только вы найдете тот, который не соответствует, выбросите свою ошибку. Если вы достигли конца цикла, все строки совпадают.

0 голосов
/ 20 декабря 2008

Похоже, вам нужно обратное сопоставление, которое сопоставляет все значения с их набором ключей.

Map<Key,Value> forwardMap;
Map<Value, Set<Key> reverseMap;

Затем вы можете увидеть, все ли записи, которые вы просматриваете, находятся в наборе. Убедитесь, что вы добавили обратное сопоставление при добавлении / удалении прямого сопоставления.

Преимущество этого подхода в том, что тест будет O (n), где n - размер проверяемых ключей, а не O (m), где m - размер прямой карты.

...