Mise à jour: Mon mauvais. J'ai mal lu cette recherche insensible à la casse.
La sensibilité à la casse est facile. Java ne prend pas encore en charge String
s dans les instructions switch
. La solution est plus facile:
if (string1.equals(string2)) {
...
} else if (string1.equals(string3)) {
...
}
Ou comme une boucle:
String[] matches = new String[] {
"abcd",
"efgh",
"ijkl"
};
for (String match : matches) {
if (matches.equals(string)) {
...
}
}
Bien sûr, cela est linéaire (O (n)) et ne pas l'échelle, mais est simple et suffit pour le plus simple des cas. Une meilleure solution est d'utiliser une recherche par hachage:
Set<String> matches = new HashSet<String>();
matches.add("abcd");
matches.add("efgh");
matches.add("ijkl");
if (matches.contains(string1)) {
...
}
Ceci est quasi linéaire (O (1)) recherche et échelle beaucoup mieux avec un grand nombre de String
s.
S'il y a beaucoup de chaînes, votre mécanisme d'appariement sera plutôt lent - O (n) - alors que l'utilisation d'un HashSet ou d'un HashMap prédéfini donnera une recherche O (1) attendue. –