Любой из основанных на хэше методов может давать плохие результаты, потому что более одной строки могут создавать один и тот же хеш. (Это маловероятно, но возможно.) Это особенно верно в отношении предложения добавить хэши, поскольку вы, по сути, взяли бы особенно плохой хеш значений хеш-функции.
Хеш-метод следует использовать только в том случае, если не важно, чтобы вы пропустили изменение или обнаружили изменение там, где его нет.
Самый точный способ - сохранить карту, используя строковые строки в качестве ключа, и сохранить счетчик каждого в качестве значения. (Если каждая строка может появиться только один раз, вам не нужен счетчик.) Вычислите это для ожидаемого набора строк. Дублируйте эту коллекцию, чтобы изучить входящие строки, уменьшив количество каждой строки, как вы ее видите.
- Если вы столкнулись с линией с нулевым счетом (или вообще без записи на карте), вы увидели линию, которую вы не ожидали.
- Если вы закончите с ненулевыми записями, оставшимися на карте, вы не увидите того, чего ожидали.