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

Langage Java Discussion :

Supprimer quelques objets d'un SortedSet


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Par défaut Supprimer quelques objets d'un SortedSet
    Bonjour.
    J'ai un SortedSet qui contient des objets de la classe suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    public class Diffusion implements Comparable {
    	private String titre;
    	private String numero;
    	private String score;}
    Si j'ai bien réalisé ma méthode de tri, les Diffusion sont stockées dans le SortedSet par score (en %) puis par titre.

    J'enregistre dedans un certain nombre d'objets Diffusion, et je voudrais être capable de n'en garder que les 5 qui ont obtenu les meilleurs scores.

    Comment puis-je faire ceci svp ?

  2. #2
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Par défaut
    Essayes ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SortedSet<Diffusion> subsortedset = tasortedset.subSet(0, 5);

  3. #3
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    A priori ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SortedSet<Diffusion> subsortedset = tasortedset.subSet(0, 5);
    ça ne marche pas, subset devrait prendre en paramètre des objets Diffusion, mais par contre c'est clair que ça serait bien pratique (en même temps il risquerait d'y avoir un problème avec SortedSet<Integer>).

    Sinon effectivement avec une boucle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    for(int i=0; i<5; i++) {
       tonSet.remove(tonSet.first());
    }

  4. #4
    Membre éclairé Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Par défaut
    en fait ça revient à recopier les 5 derniers éléments du set dans un autre c'est ça ?

    Ton code Remika retire les 5 premiers éléments , et donc d'après ce que j'ai compris les 5 "moins bons" (scores les plus bas) non ?

    et ton code CyberChouan ne va mettre que des true et des false dans le tableau non ? La méthode remove renvoie true ou false...

    public boolean remove(Object o)

    Removes the specified element from this set if it is present (optional operation). More formally, removes an element e such that (o==null ? e==null : o.equals(e)), if the set contains such an element. Returns true if the set contained the specified element (or equivalently, if the set changed as a result of the call). (The set will not contain the specified element once the call returns.)

  5. #5
    Membre expérimenté

    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    159
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 159
    Par défaut
    SortedSet<Diffusion> subsortedset = tasortedset.subSet(0, 5);
    Effectivement, en lisant la javadoc, je me rend compte que ma solution n'est pas correcte.

    J'en propose un autre (si ton SortedSet est un TreeSet):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
            TreeSet <Diffusion> nouveauset = new TreeSet <Diffusion> ();
            Iterator it = tontreeset.descendingIterator();
            int num = 0;
            while(it.hasNext() && num < 5){
                nouveauset.add(it.next());
               num++;
            }
    tontreeset = nouveauset;

  6. #6
    Membre émérite Avatar de remika
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    806
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 806
    Par défaut
    Effectivement mon truc était pas bon mais ça
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    int n = tonSet.size();
    for(int i=0; i<n-5; i++) {
       tonSet.remove(tonSet.first());
    }
    ça devrait fonctionner sans création de nouvel objet.
    (après il faut peut-être utiliser last() au lieu de first()...)

  7. #7
    Rédacteur
    Avatar de CyberChouan
    Homme Profil pro
    Directeur technique
    Inscrit en
    Janvier 2007
    Messages
    2 752
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Directeur technique
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Janvier 2007
    Messages : 2 752
    Par défaut
    Pas très beau mais tu as déjà cette méthode:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    List premiers = new ArrayList();
    SortedSet tonSet;
     
    for(int i=0; i<5; i++) {
       premiers.add(tonSet.remove(tonSet.first()));
    }
    Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
    Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
    Mes articles et tutoriaux & Mon blog informatique

Discussions similaires

  1. Supprimer quelques objets de mon image
    Par EmilieGh dans le forum Traitement d'images
    Réponses: 0
    Dernier message: 28/03/2011, 02h22
  2. Comment supprimer des objets
    Par akrobat dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 17/06/2006, 11h48
  3. [debutant]Supprimer un objet instancié
    Par mikedavem dans le forum Général Java
    Réponses: 9
    Dernier message: 12/05/2006, 00h19
  4. Supprimer un objet
    Par ana2sb dans le forum Access
    Réponses: 1
    Dernier message: 21/11/2005, 20h34
  5. [API] Supprimer un objet
    Par Halleck dans le forum Windows
    Réponses: 11
    Dernier message: 10/04/2004, 01h34

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