Java: Comparaison de l'ArrayList point à l'Entrée d'Utilisateur de la Chaîne
J'ai vu d'autres discussions à ce sujet, mais je ne comprends toujours pas la meilleure approche. Problème est que commencé: On ne peut comparer la saisie de l'utilisateur qui est une Chaîne à une liste de tableaux de l'élément (objet). Ma Liste sera plus de 40 articles.
Donc, lorsque j'essaie de comparer classesList.get(0)
à l'entrée de l'utilisateur mage
. Il ne fonctionnera pas.
List<String> classesList = new ArrayList<String>();
classesList.add("mage");
classesList.add("warrior");
classesList.add("thief");
Scanner input = new Scanner(System.in);
String input = input.next();
for (int counter = 0; counter < classesList.size(); counter++) {
if (input == classesList.get(counter)) {
//won't run body since can't compare
}
}
J'ai trouvé certains qui se sont convertis à l'arrayList pour être une Chaîne de caractères. Mais je ne sais pas comment je pourrais facilement recherche par le biais de ma liste. Je préfère le laisser comme une Liste à la place. Est la meilleure méthode pour cette approche?
String[] classesArray = classesList.toArray(new String[classesList.size()]);
OriginalL'auteur Josh | 2014-08-01
Vous devez vous connecter pour publier un commentaire.
Je pense que vous avez pour voir si la chaîne d'entrée existent dans le
ArrayList
, vous devez utilisercontains()
méthode.Mais avec vous la méthode, vous ne pouvez pas comparer des chaînes à l'aide de
==
de l'opérateur. Vous devez utiliserequals()
méthode de comparaisonAussi si tu veux faire une comparaison avec ingnoring le cas, vous devraient envisager d'utiliser
equlasIgnoreCase()
méthode au lieu deequals()
méthode.Ne pas obtenir de vous. Pouvez-vous nous expliquer un petit peu?
Quelque chose comme
if (input.equals(classesList.get(0)) == "mage") {//do stuff}
être en mesure de faire quelque chose si l'utilisateur entre une chaîne de caractères à partir de ma Liste. Un sens?Nm, j'ai tout compris. Merci une tonne pour l'aider à nouveau. 🙂
OriginalL'auteur Vallabh Patade
Je ne pas bien comprendre votre question, cependant, vous pouvez tester si une Chaîne donnée existe dans la liste à l'aide de contains()
Certains autres pointeurs
OriginalL'auteur Adam
Oui ce que vous lisez est de droite, de ne pas utiliser les éléments suivants:
Vous ne pouvez pas utiliser
==
à des fins de comparaison à la place, vous devez utiliserequals
méthode si vous utilisez de la boucle:Sinon moyen le plus facile est d'utiliser
contains
comme mentionné dans d'autres réponse.Voir aussi Comment puis-je comparer les chaînes de caractères en Java?
Cheers !!
==
tests de référence pour l'égalité..equals()
des tests de valeur de l'égalité. Est-ce la raison de la référence(?) numéro dans la mémoire de différent? Depuis visuellement nous voir "foo" et "foo", comme le même, mais ils ne serait pas le cas:new String("test") == new String("test") // --> false
OriginalL'auteur Sachin Thapa
Vous pouvez utiliser le
contains
méthode sur votre liste pour voir si une chaîne est contenue à l'intérieur d'elle, au lieu d'itération à travers elle. Toutefois, la liste sous-jacente sera toujours de parcourir le contenu de la liste en interne.Ce que vous pourriez faire à la place, pour améliorer la vitesse, est d'utiliser un
Set
à la place, qui a une belle propriété d'avoircontains
être exécuté en temps constant.contains()
méthode. Merci.OriginalL'auteur Makoto