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

Java Discussion :

Suppression dans LinkedList


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Par défaut Suppression dans LinkedList
    Bonjour à tous !

    Je me lance tout doucement dans les LinkedList, et je dois dire que j'ai un peu de mal à implémenter la méthode remove ...
    J'ai fait le bout de code suivant, mais j'ai une erreur sur la ligne en commentaire, et je ne comprend pas d'ou elle vient. (NullPointerException).
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    public class MyLinkedList<E> extends AbstractList<E> implements List<E> 
    {
            public E remove(int index) 
    	{	// TODO
    		E tmp = get(index); // On récupère l'objet à remplacer, via son index. 
    		E nextInd = get(index + 1); // Idem avec l'objet suivant
    		Node<E> nodeToRemove = new Node<E>(tmp); // On l'assigne à un Noeud
    		Node<E> nextNode = new Node<E>(nextInd); 
    		//nodeToRemove.getPrev().setNext(nextNode); 
    		nodeToRemove.setElement(null); 			
     
    		curSize--; 
     
    		return tmp;		
    	}
     
    }
    Les commentaires dans le code sont, je pense, assez explicite.

    Les implémentations des méthodes getPrev(), getNext(), etc ... Sont correctes.

    Quelqu'un pourrait-il m'expliquer d'ou viens cette faute ?

    Un grand merci d'avance à ceux qui prendront le temps de me lire !

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Salut,

    c'est dû à une confusion totale :

    ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Node<E> nodeToRemove = new Node<E>(tmp); // On l'assigne à un Noeud
    créé une nouvelle instance de Node, qui n'a aucun raison d'avoir un élément précédent.

    d'ailleurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nodeToRemove.setElement(null);
    ne manipulant qu'une nouvelle instance de Node qui n'a rien à voir avec celles que tu stockes dans ta liste chainée, ça n'effacera rien dans cette liste

    ce qu'il faut que tu fasses, c'est récupérer l'instance de Node mémorisée dans ta liste chainée
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Je suppose qu'il s'agit d'un exercice sinon la class java.util.LinkedList existe déjà !
    Selon java doc, la class AbstractList est adaptée pour une implémentation basée "random access" (pe un array). Pour une implémentation type LinkedList, la class java.util.AbstractSequentialList est plus adaptée.
    Mais sans doute l'exercice impose AbstractList ...

    pour AbstractList , une piste (peu performante) est peut être quelque chose comme:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    public E remove(int index) {
      E tmp = get(index);
      if (remove(tmp) {
        return tmp
      }
      return null;
    }

  4. #4
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Par défaut
    Merci de la réponse !

    En fait, je pensais récupérer l'instance stockée dans la liste en faisant cela.
    Même si j'avoue avoir été complètement perdu en me posant la question de la présence du new ....

    J'ai essayer de trouver une autre méthode, mais je n'arrive pas à passer outre du fait que pour récupérer cette instance, je dois utiliser un Node, afin d'utiliser la méthode getElement().

    Comment lier un Element à un Node ?

    J'avoue ne pas bien comprendre la notion de Node, je me renseigne dans la littérature

    Voici ce que j'ai fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    public E remove(int index) 
    	{	// TODO
    		E tmp = get(index); // On récupère l'objet à remplacer, via son index. 	
     
    		Node<E> nodeToRem = null; 
    		nodeToRem.getElement();	
     
     
    		curSize--; 
     
    		return tmp;		
    	}

  5. #5
    Membre expérimenté
    Profil pro
    Opération
    Inscrit en
    Décembre 2012
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Opération

    Informations forums :
    Inscription : Décembre 2012
    Messages : 91
    Par défaut
    Citation Envoyé par Mornor Voir le message
    Comment lier un Element à un Node ?

    J'avoue ne pas bien comprendre la notion de Node, je me renseigne dans la littérature
    La class Node est une class que l'on ta fournie ?

    Je suppose qu'elle est utilisée pour implémenter ta LinkedList et qu'elle contient un référence à un élément E et une référence vers le noeud Node suivant.
    Dans ce cas, tu obtenir la référence du noeud précédent le noeud avec la référence à supprimer.

  6. #6
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    88
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2013
    Messages : 88
    Par défaut
    Bonsoir,

    Oui, la classe Node m'a été fournie.
    Et elle contient effectivement toute les méthodes citées.

    Néanmoins, je ne comprend pas le lien entre un node et un élément.
    C'est pour cela que j'ai du mal à comprendre comment lié les deux ensemble afin de pouvoir récupérer l'instance effectivement contenue dans la LinkedList, via son index

  7. #7
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Tu peux peut être poster les sources de ces 2 classes, pour qu'on puisse mieux te guider...
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  8. #8
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Billets dans le blog
    2
    Par défaut
    Oublie les AbstractList ou AbstractSequentialList si tu dois implémenter une liste chainée dans le cadre d'un exercice, en particulier à partir de Node.

    Ce que tu appelles Node est une classe qui permet de stocker une valeur (l'élément dont tu parles) et un lien vers l'élément suivant pour une liste chainée vers l'avant, ou chaque node est lié à son suivant, ou à rien pour le dernier (on pourrait avoir une liste chainée vers l'arrière, ou une liste doublement chaînée vers l'avant et vers l'arrière)

    Les méthodes d'ajout (add), suppression(remove) et lecture (get) manipulent des nodes, se déplacent entre eux par leur(s) lien(s)
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

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

Discussions similaires

  1. Suppression dans une LinkedList
    Par GDMINFO dans le forum Langage
    Réponses: 8
    Dernier message: 17/04/2007, 14h41
  2. [Debutant]Suppression dans des tables avec contraintes
    Par Roming22 dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 26/10/2004, 17h23
  3. Combler les trous lors d'une suppression dans une table
    Par Billybongjoe dans le forum PostgreSQL
    Réponses: 5
    Dernier message: 08/04/2004, 14h02
  4. [LG]suppression dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2003, 21h20
  5. [LG]suppression dans un fichier
    Par cedrick essale dans le forum Langage
    Réponses: 5
    Dernier message: 10/08/2003, 15h22

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