Ответ 1
Конечно. Например, строка f5a5a608 имеет хэш-код нуля.
Я обнаружил, что с помощью простого поиска грубой силы:
public static void main(String[] args){
long i = 0;
loop: while(true){
String s = Long.toHexString(i);
if(s.hashCode() == 0){
System.out.println("Found: '"+s+"'");
break loop;
}
if(i % 1000000==0){
System.out.println("checked: "+i);
}
i++;
}
}
Изменить: Джозеф Дарси, работавший над JVM, даже написал программу, которая может построить строку с заданным хэш-кодом (до протестировать реализацию строк в операторах switch/case), в основном управляя алгоритмом хеширования в обратном порядке.