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 :

Question sur List<E>.subList()


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut Question sur List<E>.subList()
    Bonjour a tous,

    Je suis un peu perplexe par rapport à la méthode subList d'une ArrayList.

    Dans mon cas j'ai une liste de 58 éléments, définie comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<xxx> maListe = new ArrayList<xxx>();
    ou xxx représente le type d'objet.

    Hors quand je demande ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    List<xxx> maSubList = maList.subList(0,20);
    "maSubList" contient tous les éléments de "maList" et non pas les 20 premeirs éléments.

    Aurai-je oublier quelque chose ???

    Merci pour votre aide.
    Stujava

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    342
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 342
    Par défaut
    Pour moi cela marche très bien je viens de test

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
            List<Integer> malist = new ArrayList<Integer>();
            for(int i = 0 ; i <100 ; i++){
                malist.add(new Integer(i));
            }
     
            List<Integer> maSubList = malist.subList(0, 20);
            for(Integer i : maSubList){
                System.out.println(i);
            }

  3. #3
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut
    Effectivement cela fonctionne bien au niveau du display, le seul problème est que la méthode subList renvoi une vue et nom une nouvelle liste de x éléments.

    Je croyais naïvement que en appliquant la subList j'obtiendrai un subset de ma liste initiale.

    Bref, je cherche comment extraire une sous-liste d'une liste et d'obtenir dans la sous-liste le nombre d'élément demandés.

    Cordialement,
    Stujava

  4. #4
    Modérateur
    Avatar de Alkhan
    Homme Profil pro
    ingénieur full stack
    Inscrit en
    Octobre 2006
    Messages
    1 232
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : ingénieur full stack

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 232
    Par défaut
    bonjour,

    J'imagine que ce qui pose problème est que lorsque tu modifies une valeur de ta subList, la valeur est aussi modifier dans ta première liste.

    Si c'est effectivement le cas tu n'a plus qu'a faire toi même la copie des elements de ta sublist.
    Il n'y a pas de problème, il n'y a que des solutions.
    Cependant, comme le disaient les shadoks, s'il n'y a pas de solution, c'est qu'il n'y a pas de problème.
    Si toutefois le problème persiste, la seule solution restante est de changer le périphérique qui se trouve entre la chaise et l'écran

    Mes Articles : Mon premier article est sur le language D
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre Expert
    Inscrit en
    Août 2009
    Messages
    1 073
    Détails du profil
    Informations forums :
    Inscription : Août 2009
    Messages : 1 073
    Par défaut
    C'est bien le comportement annoncé de sublist :

    Returns a view of the portion of this list between the specified fromIndex, inclusive, and toIndex, exclusive. (If fromIndex and toIndex are equal, the returned list is empty.) The returned list is backed by this list, so non-structural changes in the returned list are reflected in this list, and vice-versa. The returned list supports all of the optional list operations supported by this list.
    Si tu veux créer une nouvelle liste, tu peux bien sûr faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    List<Integer> maSubList = new ArrayList<Integer>(malist.subList(0, 20));

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2004
    Messages
    218
    Détails du profil
    Informations forums :
    Inscription : Juillet 2004
    Messages : 218
    Par défaut
    Oui et bien merci bcp pour tous vos commentaires, en cherchant un peu plus (ce que j'aurai du faire depuis le début) et bien j'ai effectivement appliqué la même méthode que Rei Ichido, et maintenant tout est ok.


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

Discussions similaires

  1. Petite question sur liste déroulante
    Par Jean-Luc80 dans le forum IHM
    Réponses: 2
    Dernier message: 21/07/2008, 06h36
  2. Question sur liste déroulante
    Par mioke dans le forum Langage
    Réponses: 4
    Dernier message: 27/03/2008, 12h35
  3. Question sur List ?
    Par Seth77 dans le forum C#
    Réponses: 4
    Dernier message: 25/04/2007, 08h45
  4. des questions sur les listes chainées
    Par hunter99 dans le forum C
    Réponses: 13
    Dernier message: 05/12/2006, 22h51
  5. Question sur Zone de Liste !
    Par Orakle dans le forum IHM
    Réponses: 3
    Dernier message: 25/11/2005, 09h38

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