Java voir si arraylist contient la chaîne
J'ai une classe appelée Paragens
comme ceci:
public class Paragens {
static int contadorParagens = 1;
String nomeParagem;
int id;
public Paragens(String nomeParagem) {
this.nomeParagem = nomeParagem;
this.id = contadorParagens++;
}
//getters and setters for nomeParagem
}
Chaque Paragens objet a un nom et un Id.
Cette classe possède une méthode principale où j'ai créer plusieurs Paragens objets et de les stocker à l'intérieur d'une liste de tableaux comme ceci:
public static void main(String[] args) {
ArrayList<Paragens> paragens = new ArrayList<Paragens>();
paragens.add(new Paragens("name1");
//... add more paragens
}
Ce travail est ok. Si j'insère un tas de paragens et de les imprimer, je peux voir tat est tous ok.
Ce que je suis en train de faire est de demander à l'utilisateur de saisir un paragem nom et puis je veux voir si paragem est déjà dans la liste de tableaux.
String name;
System.out.println("Insert paragem name: ");
pickName = sc.nextLine();
System.out.println(paragens.contains(pickName));
Ce que je fais mal?
Vous devez vous connecter pour publier un commentaire.
contient
vérifie si la liste contient la chose réelle, vous l'a donné. Dans ce cas, vous êtes de passage dans unString
nom, mais en la comparant àParagem
instances.contains
peut pas comme par magie deviner que c'est censé ressembler à une propriété donnée sur laParagem
instances de comparer la chaîne.Vous pouvez facilement faire une boucle de la liste pour découvrir par vous-même:
...ou comme une fonction:
found
drapeau et justereturn true
dans la boucle oureturn false
après.equals
il faudrait créer une nouvelle Paragem, puis vérifier si cela vaut, bien évidemment.Bien, vous avez besoin pour mettre en œuvre les
contains
méthode vous-même. Faire une boucle sur le tableau d'ensemble et vérifier si le nom de l'un des éléments est l'égal de ce que vous essayez d'ajouter. Si non, ajouter unnew Paragens(pickName)
.contains
méthode. Il faut juste qu'il soit de mettre en œuvreequals
ou inspecter manuellement les instances en boucle.Des objets par défaut sont comparés par leur emplacement de mémoire. Donc, si vous avez deux Paragem avec le même nom, ils ne sont toujours pas égaux.
Donc, soit, vous vérifiez le nom de chacun:
ou à mettre en œuvre (écraser) le
equals
méthode pour comparer des noms (vous devriez être en appelantcontains
sur un nouveau Paragem objet au lieu d'unString
, tout de même).Paragem
instances. Il est en comparantString
àParagem
.contains
en Java Collections est défini pourObject
s, qui introduit ce genre de bugs.