comparaison de java ArrayList
Répondre à la discussion
Affichage des résultats 1 à 3 sur 3

comparaison de java ArrayList



  1. #1
    invite896c377a

    comparaison de java ArrayList


    ------

    Bonjour,
    Dans le cadre d'un programme java sur lequel j'aimerais écrire des test JUnits je rencontre une difficulté au moment de comparer les éléments de mon ArrayList<Integer[]> actual (ici appelée v1) et expected. Le problème est le suivant:
    Une fonctions listeObstacles renvoie une ArrayList<Integer[]> et je veux vérifier que l'ensemble des éléments renvoyés est identique à celui que j'avais prévu. Seulement, lorsque je test l'égalité de mes éléments on me renvoie systématiquement false alors que quand j'affiche les éléments des deux ArrayList, je peux constater qu'ils sont identiques. Je vous mets le code et le résultat renvoyé ci-dessous:

    Code:
    public static void main(String[] args) {
    		// TODO Auto-generated method stub
    		int[][] M=new int[][] {{1,1,1,0,1},{1,0,0,1,0},{0,1,1,0,0},{1,0,1,0,0},{0,0,0,0,0}};
    		ArrayList<Integer[]> v1=Detecteur.voisins(M, 0, 0);
    		ArrayList<Integer[]> expected1=new ArrayList<Integer[]>();
    		expected1.add(new Integer[] {0,1});
    		expected1.add(new Integer[] {1,0});
    		for(Integer[] k: v1) {
    				System.out.println(expected1.contains(k));
    			}
    		System.out.println("-------------------------------------");
    		for(Integer[] k1:v1) {
    			System.out.println(k1[0]+" "+k1[1]);
    		}
    		System.out.println("-------------------------------------");
    		for(Integer[] e1:expected1) {
    			System.out.println(e1[0]+" "+e1[1]);
    		}
    résultat:

    false
    false
    -------------------------------------
    0 1
    1 0
    -------------------------------------
    0 1
    1 0

    Si quelqu'un pouvait m'expliquer où se situe mon erreur ce serrais super sympa.

    -----
    Dernière modification par JPL ; 13/02/2018 à 14h52. Motif: Ajout de la balise Code (#) pour garder l'indentation

  2. #2
    pm42

    Re : comparaison de java ArrayList

    Normal. Tu utilises contains qui lui même fait un equals.
    Et sur des tableaux.

    En Java, equals sur des tableaux est la même chose que == : ça ne renvoie true que si c'est le même objet en mémoire. Cela ne compare pas le contenu de chaque élément.

  3. #3
    invite896c377a

    Re : comparaison de java ArrayList

    A d'accord, je vois le problème. Il faut donc que je passe aux éléments.
    Merci pour ton aide.

Discussions similaires

  1. Java-Supprimer element d'un Arraylist
    Par invite8bfed574 dans le forum Programmation et langages, Algorithmique
    Réponses: 11
    Dernier message: 27/10/2016, 12h27
  2. Comparaison performance Java vs Python
    Par inviteb1a134b2 dans le forum Programmation et langages, Algorithmique
    Réponses: 0
    Dernier message: 25/03/2016, 23h03
  3. [Java] Afficher les valeurs d'une ArrayList
    Par invitea18757b7 dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 13/02/2012, 14h02
  4. comparaison (Object = Button) en Java !!
    Par invite0da6e6b6 dans le forum Programmation et langages, Algorithmique
    Réponses: 5
    Dernier message: 02/06/2011, 13h14
  5. Arraylist en VB.net
    Par invite62ecda61 dans le forum Logiciel - Software - Open Source
    Réponses: 5
    Dernier message: 01/04/2009, 23h47