Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2570 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  Arraylist: .Contains ne fonctionne pas ??

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Arraylist: .Contains ne fonctionne pas ??

n°1856398
NeoGeoo
Posté le 01-03-2009 à 00:09:41  profilanswer
 

Bonjour,
 
J'ai une ArrayList dont les éléments sont un "tableau de String".  
J'arrive à remplir ma liste mais pourquoi la méthode contains ne fonctionne pas ??

{
List<String[]> table = new ArrayList<String[]>();
   
  String [] temp = new String [3];  //Je remplit mon tableau temp  
  temp[0]="A";
  temp[1]="B";
  temp[2]="C";      
  table.add(temp);                   // Je l'ajoute à ma liste
 
 
  String [] temp2 = new String [3];             //Je remplit mon tableau temp2 avec les mêmes éléments que temp
  temp2[0]="A";
  temp2[1]="B";
  temp2[2]="C";
                 
  boolean existe =false;
  existe =table.contains(temp) ;            /ici, contains retourne true  
  existe =table.contains(temp2) ;          /ici, contains retourne False alors que les éléments "A"B"C" ont déja été ajouté !!  Pourquoi ???
}
 
Merci

mood
Publicité
Posté le 01-03-2009 à 00:09:41  profilanswer
 

n°1856427
masklinn
í dag viðrar vel til loftárása
Posté le 01-03-2009 à 11:08:13  profilanswer
 

Pour un array, equals est équivalent à == et ne renvoie true que quand les deux arrays sont le même objet. La seule manière de tester l'égalité de valeur entre des arrays est Arrays.equals, et (à ma connaissance) Collection#contains ne se spécialise pas dessus.

 

Ton code ne renverra jamais true. Même si tu testais table.contains(temp.clone()) ça ne renverrait pas true (cf cas 3 de l'exemple).

 

Tu peux le tester trivialement en regardant la sortie de

Code :
  1. import java.util.Arrays;
  2.  
  3. class Test {
  4.    public static void main(String[] args) {
  5.        final String[] a1 = new String[] {"A", "B", "C"};
  6.        final String[] a2 = new String[] {"A", "B", "C"};
  7.        System.out.println("a1 == a2? " + (a1 == a2));
  8.        System.out.println("a1.equals(a2)? " + (a1.equals(a2)));
  9.        System.out.println("a1.equals(a1.clone())? " + (a1.equals(a1.clone())));
  10.        System.out.println("equals(a1, a2)? " + Arrays.equals(a1, a2));
  11.    }
  12. }


Message édité par masklinn le 01-03-2009 à 11:09:36

---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  Arraylist: .Contains ne fonctionne pas ??

 

Sujets relatifs
Menu accordéon Spry ne fonctionne pas sous Firefox[MySQL-PHP] Egalité sur 2 strings qui ne fonctionne pas [résolu]
copy() ne fonctionne pas car safe_mode ON[Access] Fonction "SOMME" dans un etat qui ne fonctionne pas
as3 Ça ne fonctionne pas!Bouton annuler qui ne fonctionne pas dans inputbox
Afficher/cacher une div : ne fonctionne pas sur IE 8[ Resolu ] Ma requete ne fonctionne qu'à moité ! Avez-vous une idée ?
Fonctionne sous Firefox mais pas sous IE 7client php qui ne fonctionne que sous le répertoire du script !?
Plus de sujets relatifs à : Arraylist: .Contains ne fonctionne pas ??


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)