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 :

Comparaison avec un ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Comparaison avec un ArrayList
    Bonjour,
    je suis un débutant en java et je m'interroge sur la façon de bien ajuster le comportement d'une liste pour faire des comparaisons.

    ie:
    List<Double> uneListe = new ArrayList<Double>();
    Double d;

    j'aimerais faire en sorte que quand je fais la comparaison uneListe > d, la comparaison qui s'en suit compare en fait le premier élément de ma liste avec la variable d.

    existe-il une façon de modifier le comportement des comparaisons sans dériver de classe?
    si je devais dériver quelque chose pour y pavenir, est-ce que ce devrait être le List ou le ArrayList.

    Merci beaucoup.

  2. #2
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    qu'entends tu par le "une liste > d" ? tu veux tester si tous les elements de la liste sont supériurs à d ?
    pour info List est une interface et non une classe : elle decrit le comportement de toutes les collections qui sont implémentées comme des collections ordonnées pour lesquelles les éléments sont accessibles via index : ArrayList est une de ces classes

  3. #3
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    exemple de code :

    List<Double> uneListe = new ArrayList<Double>();
    Double d;

    if (uneListe > d) {
    faireQuelqueChose
    }

    ce que je veux, c'est modifier le comportement standard de comparaison de ma liste pour que le code ci-dessous s'exécute en réalité :

    if (uneListe.get(0) > d) {
    faireQuelqueChose
    }

    étant débutant en java, par rapport à List qui est une interface et ArrayList qui est une Classe, List donne donc un ensemble de méthodes accessibles et ArrayList définie leur contenu, c'est bien ça?

    mon cas est en réalité beaucoup plus complexe que ceci, j'ai toute une série de pré-conditions à exécuter et mon code pour la comparaison dans le premier exemple est généré dynamiquement à l'exécution du programme, compilé et chargé en mémoire, c'est pour me simplifier grandement la vie que je veux permettre la modification du comportement de ma liste.

    merci d'avoir répondu si vite.

  4. #4
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Les opérateurs ne sont pas surchargeables. Il me semble que tu es obligé de te taper les .get.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  5. #5
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    +1 pour la surcharge d'opérateur, à la différence de C/C++, java ne permet pas ça.
    Dans ton exemple, tes "if" vont comparer les deux adresses des deux opérandes, ce qui je pense n'a aucun sens.
    pour comparer, tu devras utiliser la méthode compareTo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if(((Double)maListe.get(0)).compareTo(d)>0){
       ...

  6. #6
    Membre averti
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    321
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 321
    Points : 360
    Points
    360
    Par défaut
    Le cast est superflu vu qu'il utilise des collections typées

  7. #7
    Membre chevronné
    Profil pro
    Fabrication GED
    Inscrit en
    Octobre 2005
    Messages
    1 405
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : Fabrication GED

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 405
    Points : 1 958
    Points
    1 958
    Par défaut
    Citation Envoyé par leyee
    Le cast est superflu vu qu'il utilise des collections typées
    C'est dur de perdre les vieilles habitudes

  8. #8
    Membre averti Avatar de Rayndell
    Étudiant
    Inscrit en
    Mai 2007
    Messages
    289
    Détails du profil
    Informations personnelles :
    Âge : 36

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2007
    Messages : 289
    Points : 323
    Points
    323
    Par défaut
    Pas besoin de compareTo je pense. Il suffit de comparer avec les opérateurs basiques, ce sont des double.
    "Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."

  9. #9
    Candidat au Club
    Inscrit en
    Juin 2004
    Messages
    4
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    Merci pour toutes vos réponses.

    Conclusion : java ne permet pas de surcharger les opérateurs, je dois donc travailler avec le compareto ou tout autre méthode qui s'occupe de faire la comparaison selon mes paramètres.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comparaison avec BSTR
    Par Sarkou dans le forum VC++ .NET
    Réponses: 3
    Dernier message: 17/11/2006, 16h38
  2. [C#] Comment remplir un tableau avec un arraylist
    Par Cazaux-Moutou-Philippe dans le forum Windows Forms
    Réponses: 9
    Dernier message: 22/06/2006, 16h14
  3. [Oracle] type date: comparaison avec l'année en cours
    Par zchallal dans le forum Langage SQL
    Réponses: 1
    Dernier message: 21/06/2006, 08h39
  4. comparaison avec strcmp
    Par je®ome dans le forum C
    Réponses: 9
    Dernier message: 23/05/2006, 19h09
  5. comparaison avec substring
    Par tidan dans le forum Langage SQL
    Réponses: 4
    Dernier message: 27/01/2005, 18h13

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