IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Collection et Stream Java Discussion :

comparer deux tableaux sans utiliser equals ? (donc sans import java.util.Arrays; )


Sujet :

Collection et Stream Java

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Par défaut comparer deux tableaux sans utiliser equals ? (donc sans import java.util.Arrays; )
    Bonjour,

    j'ai un "handicap" dans la résolution d'un exercice, je ne peux pas utiliser " import java.util.Arrays; " et je souhaiterais savoir s'il existe une solution pour comparer le contenu de deux tableaux donc sans l'emploi de Arrays.equals();

    Je dis bien comparer le contenu (pas l'adresse ni la taille du tableau).

    Apparemment il y a une méthode mais franchement je ne trouve pas.

  2. #2
    Membre Expert
    Avatar de eulbobo
    Homme Profil pro
    Développeur Java
    Inscrit en
    Novembre 2003
    Messages
    786
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Novembre 2003
    Messages : 786
    Par défaut
    Simple

    Comparer le type qui doit être le même entre les deux tableaux
    Comparer la taille qui doit être la même entre les deux tableaux
    Puis comparer élément par élément qu'ils sont identiques au même indice (attention au null)

    Si un seul n'est pas identique, c'est que tes deux tableaux ne sont pas identiques

  3. #3
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    As-tu pensé à regarder le code de cette classe ? Car ce code est publique...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    /**
     * Compare two float arrays for equality.
     *
     * @param a1 the first array to compare
     * @param a2 the second array to compare
     * @return true if a1 and a2 are both null, or if a2 is of the same length
     *         as a1, and for each 0 <= i < a1.length, a1[i] == a2[i]
     */
    public static boolean equals(float[] a1, float[] a2)
    {
      // Quick test which saves comparing elements of the same array, and also
      // catches the case that both are null.
      if (a1 == a2)
        return true;
     
      if (null == a1 || null == a2)
        return false;
     
      // Must use Float.compare to take into account NaN, +-0.
      // If they're the same length, test each element
      if (a1.length == a2.length) {
        int i = a1.length;
        while (--i >= 0)
          if (Float.compare(a1[i], a2[i]) != 0)
            return false;
        return true;
      }
      return false;
    }
    source :
    http://grepcode.com/file/repository....ouble%5B%5D%29
    http://developer.classpath.org/doc/j...ys-source.html
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  4. #4
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Par défaut
    wha... quelle réactivité !

    Merci beaucoup, évoluer seul c'est quand même moins rapide

  5. #5
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par kolodz Voir le message
    As-tu pensé à regarder le code de cette classe ? Car ce code est publique...
    Oui enfin ce que propose eulbobo est plus adapté à l'apprentissage que fournir le code clé en main.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  6. #6
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 209
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 209
    Billets dans le blog
    52
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    Oui enfin ce que propose eulbobo est plus adapté à l'apprentissage que fournir le code clé en main.
    Maintenant que tu le dit, j'aurai du dire "Va voir le code source", lâché le lien vers la FAQ avec un RTFM en signature.

    Le code source de la classe de demandé se trouve par défaut fournit avec le JDK. Lorsque que je vois une question concernant le fonctionnement de l'API standard, je redirige systématiquement vers la documentation ou le code source. Le fait de proposer une autre solution me semble hors de la philosophie du langage. C'est un point tellement fondamental que la question associée est en tête de la FAQ Java.

    Citation Envoyé par Où peut-on trouver les sources des classes de l'API de Sun ?
    Où ?
    Sun distribue le code source de toutes les classes de l'API avec le JDK (installation de composant optionnel !). Vous pouvez donc retrouver les sources dans le fichier 'src.jar', dans le répertoire d'installation du JDK.

    Pourquoi ?
    Même si cette cette approche n'est pas à conseiller aux débutants, il peut parfois être très utile de consulter le code source des classes l'API. Cela peut permettre, par exemple, d'estimer la complexité de certains algorithmes, ou de mieux comprendre le fonctionnement d'un objet particulier (et ainsi le surcharger plus efficacement). En cherchant bien, on peut également trouver des classes non documentées...
    Pour ce qui est du taboue sur la consultation des sources pour les "débutants", c'est ridicule.

    Cordialement,
    Patrick Kolodziejczyk.

    HS : C'est comme cette logique de vouloir faire programmer les listes ou les algorithmes tri en Java sans jamais prendre le temps d'aller regarder/montrer comment cela est fait part l'API. On est loin du "write once, run anywhere"

    Note : Dans tout les cas, il est fort probable que cette discutions est à marqué résolu.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

  7. #7
    Membre du Club
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Juillet 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2014
    Messages : 6
    Par défaut
    oula faut pas s'emballer... toutefois merci pour vos réponses. Pour la petite histoire, je pensais avoir trouvé l'ultime solution à mon problème sauf que, étant débutant, je me suis heurté aussi à un problème de débutant, du coup, voir le code source tel que proposé ne m'a pas aidé au moment où j'en avais besoin. C'est seulement aujourd'hui que j'ai trouvé la réponse (oui car j'ai pris congés... et ça m'a vraiment aidé à sortir de cet enfer lié à la fatigue).

    Alors si vous êtes débutant comme je le suis et que vous désirez comparer deux tableaux, voilà la solution :
    (c'est tellement simple à comprendre que je n'ai pas pris la peine de commenter qui fait quoi...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    27
    28
    29
    30
    31
    public class okpourcomp {
     
    public static void main(String[] args){
    	float [] comp={10,15,29,22};
    	float [] comp1={10,15,29,22};
     
     
    	//comparaison des valeurs des deux tableaux
     
    	boolean test=true;
     
     
    	if ( comp.length == comp1.length )
    	{
    		int z = comp.length;
    		while ( --z >= 0 && test != false ) 
    		{
    			if ( Float.compare(comp[z], comp1[z]) != 0 ) test=false;  
     
    		}
     
    	}	
    	//System.out.println( test );
    	else { System.out.println("les tableaux n'ont pas les mêmes tailles"); }
     
     
    	if (test == true ) System.out.print(" Les deux tableaux sont identiques" ); 
    	if (test == false )  System.out.print(" les deux tableaux sont différents");
     
    }
    }

Discussions similaires

  1. [Tableaux] Comparer deux tableaux
    Par popy67 dans le forum Langage
    Réponses: 2
    Dernier message: 05/05/2008, 07h22
  2. Comparer deux tableaux
    Par gefrey54 dans le forum Powerbuilder
    Réponses: 0
    Dernier message: 12/09/2007, 10h58
  3. comparer deux tableaux
    Par djibril dans le forum Langage
    Réponses: 4
    Dernier message: 15/11/2005, 15h26
  4. [struts] Comparer deux variables avec <logic:equal>
    Par trax020 dans le forum Struts 1
    Réponses: 4
    Dernier message: 29/05/2005, 11h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo