Partage

Vecteur en Java

chercher dans un vecteur

Le 1 octobre 2009 à 14:31:33

Bonjour :) ,
j'ai un problème concernant la recherche d'un stagiaire dans un vecteur à partir de son nom
j'ai réessayé avec trois méthodes mais aucun résultat
voici mon code :

for(int i=0;i<v.size();i++)
{
	System.out.println("entrer le nom de Stagiaire");

	String name=buf.readLine();

	stg=(Stagiaire)v.elementAt(i);

	if(name==stg.getNom())
	{ 
		//stg.afficher_stagiaire();   //de la classe stagiaire
		
		//System.out.println(" "+v.get(i));  //de la classe vecteur
		
		//System.out.println(" "+stg.toString());  // la classe stagiaire
	}
}



le code de la méthode afficher_stagiaire() est:

public void afficher_stagiaire() throws IOException
	{
		System.out.println("le Matricule de Stagiaire est :"+mat);
		System.out.println("le nom de Stagiaire est :"+nom);
		System.out.println("le prénom de Stagiaire est :"+prenom);
		System.out.println("l'age de Stagiaire est :"+age);
		
	}
Publicité
Le 1 octobre 2009 à 14:31:33
Le 1 octobre 2009 à 14:56:33

Les égalités ça se test avec la méthode equals et non "==", question d'emplacement mémoire. Sinon ta méthode ne boucle pas vraiment sur les éléments de ton vecteur en entier. Pour ça il faudrait plutôt sortir ton readLine de la boucle for et le mettre avant.
Le 1 octobre 2009 à 15:12:52

Puisqu'on en est aux remarques :

- Placer ta saisie dans la boucle n'a pas de sens (comme ça a été dit), ça devrait sans doute être à l'extérieur.
- Le throws IOException de afficher_stagiaire() ne sert à rien si ce n'est à gêner le code appelant.
- Tu peux déclarer ta collection en generic pour éviter le vilain cast (Stagiaire)v.elementAt(i).
- Il vaut mieux utiliser une Map plutôt qu'une Liste pour faire des recherches d'égalité lorsque c'est possible.
- On utilise pas un Vector si une ArrayList fait l'affaire.

anonyme
avatar
Le 1 octobre 2009 à 15:15:58

Il faut prendre des ArrayList et pas de Vector.
Le Vector ne sert que pour les synchronisation multi-thread, mais bon les ArrayList peuvent aussi le faire.
Les Vector sont encore présent dans JAVA uniquement pour la rétro compatibilité.

Et pour ta question janulrich00001 a raison.
Le == ne fait que testé les type primitif, pour les autre type (aka Class) le == ne teste que les pointeurs (enfin référances) par les objet en tant que tel.
Le 1 octobre 2009 à 20:47:10

Je vous remercie infiniment,
ça marche avec equals()
je vous remercie pour vos réponses

Vecteur en Java

× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
  • Editeur
  • Markdown