Это подход, который сохранит память, но не гарантирует совпадение.Определение хеш-кодов говорит, что они не будут уникальными.Если вы хотите сохранить уменьшенную версию строки, вам следует сохранить дайджест строки, такой как MD5.
Вот как вы получаете дайджест.
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
...
MessageDigest md = MessageDigest.getInstance("MD5");
byte[] digestBytes = md.digest(string.getBytes());
MD5 имеет длину 16 байт.так что это сэкономит вам память только в том случае, если ваши строки значительно длиннее, чем 8 символов (по 2 байта на символ).
Но если ваши файлы слишком велики, вам действительно не нужно беспокоиться о памяти иHashSet
ответов дадут вам лучшие результаты.
Редактировать:
MD5 создает коллизии, но не в реальных условиях.Он не должен использоваться в качестве криптографического хэш-кода, но в этом случае он будет работать нормально.Существуют и другие функции дайджеста, такие как SHA256, у которых меньше шансов на столкновение, но размер их дайджеста больше.