69 votes

ArrayList contient la sensibilité à la casse

J'utilise actuellement la méthode contains appartenant à la classe ArrayList pour effectuer une recherche. Existe-t-il un moyen de rendre cette recherche insensible à la casse en Java ? J'ai trouvé qu'en C# il est possible d'utiliser OrdinalIgnoreCase. Existe-t-il un équivalent Java, ou une autre façon de le faire? Merci.

66voto

Aaron J Lang Points 628

Vous pouvez l'utiliser exactement comme vous utiliseriez n'importe quel autre ArrayList. Vous pouvez transmettre cette liste à un autre code, et le code externe n'aura pas à comprendre les classes wrapper de chaîne.

 public class CustomStringList3 extends ArrayList<String> {
    @Override
    public boolean contains(Object o) {
        String paramStr = (String)o;
        for (String s : this) {
            if (paramStr.equalsIgnoreCase(s)) return true;
        }
        return false;
    }
}

52voto

Free-Minded Points 2967

En Java8, en utilisant anyMatch

 List<String> list = Arrays.asList("XYZ", "ABC");
String matchingText = "xYz";

boolean isMatched = list.stream().anyMatch(matchingText::equalsIgnoreCase);

34voto

Josh M Points 4212

Si vous utilisez Java 8, essayez :

 List<String> list = ...;
String searchStr = ...;
boolean containsSearchStr = list.stream().filter(s -> s.equalsIgnoreCase(searchStr)).findFirst().isPresent();

9voto

user1129335 Points 255

En regardant l' API Java , il n'y a pas de telle méthode pour contains.

Mais vous pouvez faire au moins deux choses :

  1. Remplacez la méthode equals de votre objet ArrayList par la vôtre, ou equalsIgnoreCase(str)
  2. Écrivez votre propre méthode contains, qui doit parcourir vos entités ArrayList, et effectuez une vérification manuelle.

     ArrayList<String> list = new ArrayList<String>();
    ...
    containsIgnoreCase("a", list);
    
    public boolean containsIgnoreCase(String str, ArrayList<String> list){
        for(String i : list){
            if(i.equalsIgnoreCase(str))
                return true;
        }
        return false;
    }
    

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X