Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1861 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

---------------
Stick a parrot in a Call of Duty lobby, and you're gonna get a racist parrot. — Cody

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-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR