[Vector] Ajouter un Vector dans un autre Vector
Salut,
Dans un premier temps, je rempli mon premier vecteur avec les valeurs obtenues via le StringTokenizer (Ceci fonctionne parfaitement). Le probleme survient au moment d´ajouter ce vecteur dans un autre! Le vecteur est completement vide, je ne comprends pas j´ai pourtant l´impression que mon code est bon :? :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
|
Vector vect = new Vector();
Vector vector = new Vector();
System.out.println("[MyJSPAction] Aoi = " + AoI);
StringTokenizer st = new StringTokenizer(AoI, ";", false);
int i = 1;
while(st.hasMoreTokens())
{
vect.addElement(st.nextToken());
if(i == 2){
vector.addElement(vect);
System.out.println("vect[0] = " + vect.elementAt(0));
System.out.println("vect[1] = " + vect.elementAt(1));
vect.clear();
System.out.println("vector = " + vector);
i = 0;
}
i++;
}
System.out.println("vector size = " + vector.size()); |
et la sortie me donne:
Code:
1 2 3 4 5 6 7 8 9 10 11 12
|
[MyJSPAction] Aoi = -127.31707317073169;46.09756097560975;91.31707317073173;46.09756097560975;-127.31707317073169;-49.609756097560
975;91.31707317073173;-49.609756097560975
vect = [-127.31707317073169, 46.09756097560975]
vector = [[]]
vect = [91.31707317073173, 46.09756097560975]
vector = [[], []]
vect = [-127.31707317073169, -49.609756097560975]
vector = [[], [], []]
vect = [91.31707317073173, -49.609756097560975]
vector = [[], [], [], []]
vector size final = 4 |
Merci de votre aide!
Re: [Vector] Ajouter un Vector dans un autre Vector
Salut,
En Java les objet sont géré par référence...
Lorsque tu fais :
Code:
1 2 3
|
vector.addElement(vect);
vect.clear(); |
Tu ajoute un Vector dans un autre Vector mais tu supprime son contenu juste après...
Ton second Vector ne comprendra qu'un seul élément (un Vector vide à cause du clear()...)
Si comme je le pense tu veux ajouter dans des Vector de 2 elements à chaque fois il faut faire :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
// La list qui servira de conteneur globale
List conteneur = new ArrayList ();
// La variable qui contiendra les liste de 2 elements
List contenu = new ArrayList ();
System.out.println("[MyJSPAction] Aoi = " + AoI);
StringTokenizer st = new StringTokenizer(AoI, ";", false);
while ( st.hasMoreTokens() ) {
contenu.add ( st.nextToken() );
// Si la list possede 2 element, on l'ajoute au conteneur
// et on cree une nouvelle liste pour le contenu
if ( contenu.size() >= 2 ) {
conteneur.add ( contenu );
contenu = new ArrayList ();
}
}
// On verifie la taille du dernier elements pour l'ajouter
//si il n'est pas vide
if ( contenu.isEmpty() == false )
conteneur.add ( contenu ); |
PS: addElement() est equivalent à add() mais ne correspond pas à l'interface List.
Cette méthode n'existe que pour être compatible avecde vieux JDK.
Si tu n'utilise pas de vieux JDK utilise plutot List et ArrayList que Vector...
a++