2013-03-07 3 views
6

Kann ich der array.contains() -Methode irgendwie mitteilen, dass die Groß- und Kleinschreibung nicht beachtet werden soll?Array enthält() ohne Berücksichtigung der Groß- und Kleinschreibung?

List<String> data = Arrays.asList(
    "one", Two", "tHRee"); //lots of entries (100+) 

data.contains("three"); 
+1

ich Ihnen meine erraten 'List.contains()' – m0skit0

+1

alles konvertieren vor dem Einsetzen in 'data' in Kleinbuchstaben und vor aufzublicken? – NPE

+0

http://stackoverflow.com/questions/8751455/arraylist-contains-case-sensitivity –

Antwort

17

contains nur überprüfen, ob ein Objekt in der Liste vorhanden ist. Sie können also hier keine Groß-/Kleinschreibung beachten, da "drei" ein anderes Objekt als "Drei" ist.

Ein einfacher Ansatz zur Lösung dieses

public boolean containsCaseInsensitive(String s, List<String> l){ 
    for (String string : l){ 
     if (string.equalsIgnoreCase(s)){ 
      return true; 
     } 
    } 
    return false; 
    } 

sein würde und dann

containsCaseInsensitive("three", data); 

Java 8+ Version:

public boolean containsCaseInsensitive(String s, List<String> l){ 
     return l.stream().anyMatch(x -> x.equalsIgnoreCase(s)); 
    } 
+0

@membersound - wie haben Sie equalsIgnoreCase für dieses Szenario verwendet? –

0

es erfordert, dass Sie Ihre eigene Methode schreiben . Zeiger für benutzerdefinierte :

  1. Iterierte über alle Elemente in der Liste.
  2. vergleichen Sie die Parameter-String mit allen Werten in
  3. zum Vergleich Groß- und Kleinschreibung achten Sie darauf, gelten alle toLowerCase oder toUpperCase auf beiden Parameter und das aktuelle Element zu machen.

    Listenliste; public boolean enthält (String str) {

    for(int i=0;i<list.size();i++){ 
         if(list.elementAt(i).toLowerCase().Equals(str.toLowerCase())) return true; 
        } 
    return false; 
    } 
    
+1

Keine effiziente Antwort. Sie konvertieren 'str' in Kleinbuchstaben N-mal (einmal für jedes Element von' list'), und Sie konvertieren jedes Element von 'list' bei jedem Aufruf dieser Methode in Kleinbuchstaben. Wenn Sie sich die Mühe machen, Ihre eigene Methode zu schreiben, benutzen Sie einfach 'equalsIgnoreCase' und überspringen Sie alle Zuweisungen. –

Verwandte Themen