Compter les occurrences d'une chaîne dans une liste de tableaux
J'ai une liste de chaînes de caractères , je le parcourir et de compter le nombre de "x" les chaînes de caractères comme ci-dessous mais le comte n'a pas l'impression de me la valeur attendue:
ArrayList<Integer> list = new ArrayList<Integer>();
List<String> strings = table.getValue(); //this gives ["y","z","d","x","x","d"]
int count = 0;
for (int i = 0; i < strings.size(); i++) {
if ((strings.get(i) == "x")) {
count++;
list.add(count);
}
}
System.out.println(list);
cela donne []
il devrait être de 2 comme j'ai 2 occurrences de "x"
Ne pas comparer des chaînes de caractères avec
Pourquoi êtes-vous à l'aide de ArrayList compter?
Je me demande comment beaucoup moins de trafic AFIN d'obtenir si le compilateur de Java ont été d'avertir sur
ok, j'ai changé d'égal à égal, le problème est maintenant que l'impression de m' [1,2] au lieu de[2] ?
==
utilisation equals()
.Pourquoi êtes-vous à l'aide de ArrayList compter?
Je me demande comment beaucoup moins de trafic AFIN d'obtenir si le compilateur de Java ont été d'avertir sur
==
comparaison de chaînes de caractères...ok, j'ai changé d'égal à égal, le problème est maintenant que l'impression de m' [1,2] au lieu de[2] ?
OriginalL'auteur lola | 2011-10-07
Vous devez vous connecter pour publier un commentaire.
Il y a déjà un méthode existante pour cela:
Dans votre cas, l'utilisation de cette façon (remplacez tous vos codes affichée avec ça):
Voir mon edit
ok, merci! nous pouvons donc utiliser les collections directement comme vous venez de le mentionner ?
oui, c'est une méthode statique, c'est la façon dont vous l'utiliser.
JRL: merci...
OriginalL'auteur JRL
Nous vous conseillons de comparer les chaînes à l'aide
equals
au lieu de==
. I. e. changementà
==
compare les références, tout en.equals
compare le contenu réel de chaînes.Questions connexes:
C'est parce que vous add
count
à la liste chaque fois que vous l'incrémenter. Soit, il suffit d'imprimercount
au lieu delist
, ou supprimer le précédentcount
delist
avant de l'ajouter de nouveau.OriginalL'auteur aioobe
Vous devez utiliser:
!= /== vérifie seulement la référence.
Je ne sait pas pourquoi vous utilisez une liste de tableaux pour les compter. Vous auriez probablement quelque chose comme ça:
Il suffit d'utiliser une boucle for; voir mon code.
OriginalL'auteur MasterCassim
À une Chaîne, vous devez utiliser la méthode equals.
OriginalL'auteur Vaandu
Depuis que vous êtes à la recherche pour les deux éléments ainsi que de la taille, je vous recommande de Goyave est Iterables.filtre méthode
Mais comme tout le monde l'a souligné, la raison que votre code n'est pas le travail, c'est la
==
OriginalL'auteur John B