Для этого вы можете использовать любую подходящую для ваших нужд (с точки зрения коллизий, производительности) хэш-функцию, например, SHA-1:
public class MainClas {
public static void main(String[] args) throws NoSuchAlgorithmException {
Map<String, Integer> map = new HashMap<>();
map.put("1", 1);
map.put("2", 2);
map.put("3", 3);
String mapString = map.entrySet().toString();
System.out.println(mapString);
MessageDigest digest = MessageDigest.getInstance("SHA-1");
byte[] hashBytes = digest.digest(mapString.getBytes());
String hashString = bytesToHex(hashBytes);
System.out.println(hashString);
}
private static String bytesToHex(byte[] hashInBytes) {
StringBuilder sb = new StringBuilder();
for (byte b : hashInBytes) sb.append(String.format("%02x", b));
return sb.toString();
}
}
, вывод:
[1=1, 2=2, 3=3]
1a1677fe956c66c776a100b32b0a2b20fdabb5f3
PS вы можете минимизировать коллизии, используя составной хэш из хешей, созданных из разных алгоритмов (2 или 3).