Ich habe verschiedene Kombinationen für den Stringvergleich ausprobiert ( Code hier ):
1. s1.equals(s2)
2. s1.length() == s2.length() && s1.hashCode() == s2.hashCode() && s1.equals(s2)
3. s1.hashCode() == s2.hashCode() && s1.equals(s2);
4. s1.length() == s2.length() && s1.equals(s2);
Ich habe Strings von 40 Zeichen Länge verwendet, in 10000000000L Iterationen und vor jeder Iteration habe ich die Strings reinitialisiert.
für gleiche Stiche, die ich bekam:
equal: 2873 milis ???
equal: 21386 milis
equal: 7181 milis
equal: 2710 milis ???
für die gleiche Größe Saiten, aber letzte Zeichen anders bekam ich:
different: 3011 milis
different: 23415 milis
different: 6924 milis
different: 2791 milis
für verschiedene Größen, fast die gleichen Zeichenketten, aber ein Zeichen am Ende für s2 hinzugefügt:
different size: 3167 milis
different size: 5188 milis
different size: 6902 milis
different size: 2951 milis
scheint mir, dass es am besten ist, zuerst einen string.length()-Vergleich vor equals() zu verwenden.
Aber dies wird fast überhaupt keine Rolle, weil dies der Fall ist, wo ich 10^10 String-Vergleiche mit 40 Zeichen Länge und was ist bizarr für mich ist der Fall, wo für gleiche Zeichenfolgen ich eine bessere Geschwindigkeit haben, wenn ich die String-Länge zuerst vergleichen.