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 :

Avoir des sections d'une ArrayList sans utiliser sublist


Sujet :

Collection et Stream Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut Avoir des sections d'une ArrayList sans utiliser sublist
    Bonjour,

    Je veux faire une méthode qui est basée sur le principe de la méthode sublist de l’interface List mais sans utiliser cette méthode car le résultat demandé doit être un tableau de ArrayList et vu que List est une classe mère de ArrayList, Bosser avec List et faire le cast par la suite ne sera pas possible
    La coupe se passe bien sauf qu'on dirait j'ai perdu la référence, si je change un élément dans La ArrayList, la coupe qui en découle ne prends pas en considération ce changement et je ne sais pas comment résoudre çà

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                        temp = new ArrayList<E>();  //supposée être la "sublist"
                        for(int i = getDebut(); i<  getFin();  i++) {
    	                               temp.add(this.get(i);
    		}
    ça fait la coupe sauf que ça garde pas la référence, une modification dans l'un des tableaux n'affecte pas l'autre

    Lignes de tests:
    original=[un, deux, trois, quatre]
    temp = [un, deux] // indexdebut 0, index fin = 2
    original.set( 1, neuf);
    original=[un, neuf, trois, quatre]
    temp = [un, deux] // alors que ça devrait être [un, neuf]

    Besoin de votre aide SVP

    Merci d'avance

  2. #2
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par HanenB27 Voir le message
    ça fait la coupe sauf que ça garde pas la référence, une modification dans l'un des tableaux n'affecte pas l'autre
    c'est normal, tu créé une nouvelle instance de ArrayList pour faire ce que tu désires, donc, plus de connexion avec la liste originale.

    Par contre ça:

    ... car le résultat demandé doit être un tableau de ArrayList et vu que List est une classe mère de ArrayList, Bosser avec List et faire le cast par la suite ne sera pas possible
    j'avous que j'ai rien capté ^^ et pire que ça, j'ai l'impression que le besoin - forcer une tableau de ArrayList par rapport à un tableau de List - est parfaitement contre-productif (il s'agit d'une bonne pratique de toujours utiliser le type le plus générique dans les déclarations de variables, afin de pouvoir changer l'implémentation sans impacter le reste du code)

  3. #3
    Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Septembre 2018
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2018
    Messages : 7
    Par défaut
    En fait il nous fournit un Tableau d'arryList et demande qu'on fasse des coupes dedans et le resultat retourne doit etre un arraylist aussi
    ca doit etre des coupes virtuelles, aucune copie de valeur n'est reellement faite, juste le nouveau arraylist a une reference vers le arrayList principal,
    de la sorte que si on fait un set(valeur) sur l'un cette modification doit apparaitre dans l'autre.

    La methode la plus connu c'est subList de l'interface List sauf que cette derniere me retourne une List et non pas un ArrayList
    et on aucun cas on peut la caster le resultat fourni en type List en ArrayList vu que c'est sa classe mere

    en gros, il nous bosser avec les references et je ne vois pas comment faire ca

  4. #4
    Membre Expert

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Janvier 2004
    Messages
    2 301
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2004
    Messages : 2 301
    Par défaut
    Citation Envoyé par HanenB27 Voir le message
    et le resultat retourne doit etre un arraylist aussi
    Je ne connais pas le contexte, je ne sais pas quelle est la volonté du prof (si c'est un prof) de coller à chaque mot de son énoncé, mais là, c'est clairement un anti-pattern, une mauvaise pratique qu'il ne faut pas reproduire, et qui lorsque c'est fait, démontre une mécompréhension du principe de polymorphisme.

    On essaie toujours, toujours, de référencer le type le plus abstrait dans la déclaration d'une variable. Pas de tableau d'ArrayList, mais des tableaux de java.util.List. Je ne vois pas bien ce qui existe dans ArrayList qui n'existe pas déjà dans java.util.List, ni un quelconque besoin de s'attacher si fortement à une implémentation spécifique.

    'enfin bref, si tu peux prendre un tant soit peu de libertés, je te conseille fortement de le faire.

    Si tu ne peux pas, alors, il faudra que tu déclares tout un ensemble de variable pour stocker les différentes bornes de tes listes, et que tu déclares les opérations de base permettant de faire des manipulations cohérentes sur l'ensemble des objets en utilisation (remplacer le 2ème élément de ton tableau temp lorsque l'on change le contenu de la liste originale, etc). C'est compliqué, très sujet aux erreurs et parfaitement inutile... Mais ça peut se faire

  5. #5
    Invité de passage
    Homme Profil pro
    Étudiant
    Inscrit en
    Février 2019
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2019
    Messages : 1
    Par défaut
    Meme problème ici. le subList fait perdre la référence et quand on utilise la méthode pour coupé on doit renvoyer l'objet qui contient le tableau. problématique cette question

Discussions similaires

  1. Reference sur ftp.exe sous Wndows
    Par pzawa dans le forum Dépannage et Assistance
    Réponses: 1
    Dernier message: 09/01/2006, 11h56
  2. Réponses: 2
    Dernier message: 27/12/2005, 12h03
  3. Pb reference sur une globale inutilisée (VC6)
    Par symmenthical dans le forum MFC
    Réponses: 1
    Dernier message: 11/05/2005, 21h35
  4. Probleme heritage : References sur la table parente
    Par Belgar dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 03/05/2005, 22h11
  5. reference sur un objet
    Par romeo9423 dans le forum C++
    Réponses: 5
    Dernier message: 16/02/2005, 21h53

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