In der Standard-Java-API Sie haben:
String.CASE_INSENSITIVE_ORDER
So brauchen Sie nicht einen Komparator neu zu schreiben, wenn Sie Strings mit sortierten Datenstrukturen verwenden waren.
String s = "some text here";
s.equalsIgnoreCase("Some text here");
Ist, was Sie für reine Gleichheitsprüfungen in Ihrem eigenen Code wollen.
Nur um weitere Informationen über alles bezüglich der Gleichheit von Strings in Java. Die hashCode() Funktion der Klasse java.lang.String „Groß- und Kleinschreibung“:
public int hashCode() {
int h = hash;
if (h == 0 && value.length > 0) {
char val[] = value;
for (int i = 0; i < value.length; i++) {
h = 31 * h + val[i];
}
hash = h;
}
return h;
}
Wenn Sie also eine Hashtable/HashMap mit Strings als Schlüssel verwenden möchten, und haben Schlüssel wie „somekey“, " SOMEKEY "und" somekey "werden als gleich angesehen, dann müssen Sie die Zeichenfolge in eine andere Klasse umbrechen (Sie können String nicht erweitern, da es sich um eine letzte Klasse handelt).Zum Beispiel:
private static class HashWrap {
private final String value;
private final int hash;
public String get() {
return value;
}
private HashWrap(String value) {
this.value = value;
String lc = value.toLowerCase();
this.hash = lc.hashCode();
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o instanceof HashWrap) {
HashWrap that = (HashWrap) o;
return value.equalsIgnoreCase(that.value);
} else {
return false;
}
}
@Override
public int hashCode() {
return this.hash;
}
}
und es dann als solche verwendet werden:
HashMap<HashWrap, Object> map = new HashMap<HashWrap, Object>();
Wenn Sie wissen, dass es Groß- und Kleinschreibung ist, könnten Sie konvertieren beide oder vor dem Vergleich in Großbuchstaben in Kleinbuchstaben. – fastcodejava
Wenn Sie 's1.equalsIgnoreCase (s2)' verwenden, kann es vorkommen, dass Sie es nicht überall ausführen können. Ich schlage vor, dass Sie herausfinden, woher die Zeichenkette kommt - vielleicht eine Datei oder Datenbank oder Benutzereingabe - und konvertieren Sie sie in Großbuchstaben (oder Kleinbuchstaben) und verwenden Sie weiterhin .equals für den Vergleich. – H2ONaCl
Konvertieren Sie nicht in Groß-/Kleinschreibung (wie in den obigen Kommentaren vorgeschlagen), verwenden Sie die akzeptierte 'equalsIgnoreCase'-Methode. Informieren Sie sich über das Problem mit Türkisch I und ähnlichen Unicode-Problemen. –