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 :

Trier une ArrayList


Sujet :

Collection et Stream Java

  1. #1
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Points : 157
    Points
    157
    Par défaut Trier une ArrayList
    salut j'ai quelque questions:

    le passage en java se passe par référence ou par valeur??

    dans cette exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public static void bulles(int [] a) {
      for(int k=0 ; k<a.length-1 ; k++)
        for(int j=a.length-1 ; j > k ; j--)
          if (a[j] < a[j-1]) swap(a,j,j-1) ;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private static void swap(int x[], int a, int b) {
      int t = x[a]; x[a] = x[b]; x[b] = t;
    }
    est ce qu'on échange juste les valeurs de ce ce tableau ??

    2- j'ai un exercice a faire de trier une arraylist en utilisant des foncteurs mais vraiment je sais même pas d’où commencer ; dois je utiliser un iterator
    s'il vous plait juste le raisonnement que je dois suivre parce que je suis bloqué

  2. #2
    Rédacteur/Modérateur
    Avatar de andry.aime
    Homme Profil pro
    Inscrit en
    Septembre 2007
    Messages
    8 391
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Ile Maurice

    Informations forums :
    Inscription : Septembre 2007
    Messages : 8 391
    Points : 15 059
    Points
    15 059
    Par défaut
    Bonjour,

    Java fait une passage par référence pour les objets et par valeur pour les types primitifs. Sauf pour le type String.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    String a = "Bonjour";
    String b = "Bonjour";
    String c = new String("Bonjour");
    boolean d = (a==b); // true
    boolean e = (a==c); // false
    boolean f = a.equals(c); // true
    .

    Pour trier un arrayList, utilise Collection.sort et si tu compares un objet avec plusieurs propriétés, tu dois utiliser aussi un comparator.

    A+.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 635
    Points
    21 635
    Par défaut
    Il est plus correct de dire qu'en Java, les paramètres se passent par valeur.
    Seulement, en Java, les objets sont toujours des références vers les objets.

    Donc quand on passe un objet en paramètre, on passe par valeur une référence vers cet objet. Si c'est un objet modifiable (comme un tableau par exemple) et qu'on le modifie, on modifie donc l'objet qu'on nous a passé au départ.
    Par contre si on y assigne un autre objet, ça ne change rien à l'objet qui avait été passé.

    En plus court :
    - les objets modifiables (comme les tableaux) peuvent être modifiés par les méthodes auxquelles on les passe en paramètre.
    - les objets immutables (comme les String) ne le peuvent pas.
    - assigner un nouvel objet à une variable, ce n'est pas modifier l'objet, c'est modifier la variable.


    Citation Envoyé par andry.aime Voir le message
    Java fait une passage par référence pour les objets et par valeur pour les types primitifs. Sauf pour le type String.
    Pour ce qui est d'être passés en paramètres, les String fonctionnent comme tous les types objets -_-°...

  4. #4
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    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 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Bonjour,

    Je vous conseil la classe Arrays de l'API standard :
    http://docs.oracle.com/javase/7/docs...il/Arrays.html

    La fonction sort() trie un tableau soit par défaut, soit par le comparateur fournit à la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    sort(int[] a);
    //Sorts the specified array into ascending numerical order.
    sort(T[] a, Comparator<? super T> c);
    //Sorts the specified array of objects according to the order induced by the specified comparator.

    Sinon, si tu veux un exemple, autant prendre celui utiliser par l'API :
    http://www.java2s.com/Open-Source/An...ksort.java.htm
    Tout est basé sur la fonction "dualPivotQuicksort".

    Cordialement,
    Patrick kolodziejczyk.

  5. #5
    Membre habitué
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    262
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 262
    Points : 157
    Points
    157
    Par défaut
    merci pour vos réponses mais pour la deuxième question c'est pas encore clair;
    je dois trier une arraylist ou n'importe quel collection ; et je dois tout réécrire je dois pas utiliser les méthodes existante tel que sort ...
    et mon travail doit utiliser un comparator

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Points : 48 804
    Points
    48 804
    Par défaut
    Citation Envoyé par andry.aime Voir le message
    Bonjour,

    Java fait une passage par référence pour les objets et par valeur pour les types primitifs.
    Tous les passages en java se font par valeur. Maintenant pour les objet est les tableaux, la seule valeur que peux contenir une variable, c'est une référence vers l'objet / tableau. On a donc appel par valeur, cette valeur étant une référence.

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

Discussions similaires

  1. Trier une ArrayList<Rect> , OpenCv
    Par babolow dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 08/06/2013, 23h54
  2. Trier une arrayList
    Par toma03 dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 28/07/2009, 15h32
  3. trier une collection ou une arraylist
    Par r83 dans le forum C#
    Réponses: 3
    Dernier message: 21/10/2008, 10h06
  4. trier une liste d'objets dans une ArrayList
    Par sandrine49 dans le forum Collection et Stream
    Réponses: 9
    Dernier message: 13/10/2008, 08h59
  5. trier une arraylist selon un critère
    Par marion5515 dans le forum Collection et Stream
    Réponses: 6
    Dernier message: 15/03/2008, 20h25

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