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

avec Java Discussion :

Ajout d'un élément dans une ArrayList


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 243
    Par défaut Ajout d'un élément dans une ArrayList
    Bonsoir,
    Je suis débutant en java.
    J'ai une ArrayList d'entier dans laquelle, je veux ajouter des nombres. Pour cela, j'ai deux classes : une classe EntierOrdonne qui implémente les méthodes insertion et affichage.
    Et une classe CreerEntierOrdonne qui hérite de la classe EntierOrdonne.
    Le problème c'est que mes insetions en marche pas.

    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
    19
    20
     
    public class EntierOrdonne{
     
    	//Instanciation de la collection d'entier
    	ArrayList<Integer> listEntier = new ArrayList<>();
     
    	public void insertion(int x) {
    		listEntier.add(x);
     
    		//Tri de la liste
    		Collections.sort(listEntier);
    	}
     
           public void Affichage() {
     
    		for(int i=0; i<= listEntier.size(); i++) {
    			System.out.println(listEntier.get(i));
    		}
    	}
    }
    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
    19
    20
     
    public class CreerEntierOrdonne extends EntierOrdonne{
     
    	public static void main(String[] args) {
    		int x, nbre = 0;
     
    		System.out.println("Entrer le nombre d'entier ");
     
    		Scanner scan = new Scanner(System.in);
    		nbre = scan.nextInt();
     
    		for (int i = 0; i <= nbre; i++) {
    			x = scan.nextInt();
     
    			new EntierOrdonne().insertion(x);
    		}
     
    		new EntierOrdonne().Affichage();
    	}	
    }

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Hello,

    le problème c'est tu crées toujours un nouvel objet, puisque tu utilises toujours new.

    Chaque objet contient ses propres données, et les autres objets contiennent d'autres données.

    En l'occurrence donc, ta classe EntierOrdonne déclare parmi ses données, une ArrayList nommée listEntier. C'est très bien. Et donc chaque objet de classe EntierOrdonne aura sa propre ArrayList qui contient ses propres entiers. Et qui commence vide, puisque listEntier est initialisée avec new ArrayList<>(); donc création d'une nouvelle ArrayList vide.

    Quand tu fais new EntierOrdonne().insertion(x); tu crées un nouvel objet de classe EntierOrdonne(), et tu y ajoutes bel et bien un entier.

    Mais le problème c'est que cet objet, tu n'en fais plus rien ensuite, il se perd dans le ramasse-miettes. La prochaine fois que tu fais new EntierOrdonne().insertion(x); c'est un nouvel objet, qui n'a rien à voir avec le précédent, auquel tu ajoutes un premier entier. Et que tu perds juste après, comme à chaque fois.

    Même chose avec new EntierOrdonne().Affichage(); tu crées un nouvel objet EntierOrdonne, qui est donc vide, et tu l'affiches. Forcément afficher un objet vide ça n'affiche rien.

    Voici une manière d'utiliser la classe EntierOrdonne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    EntierOrdonne ordonneur = new EntierOrdonne();
    ordonneur.insertion(2);
    ordonneur.insertion(4);
    ordonneur.insertion(1);
    ordonneur.Affichage();
    On notera avant tout :
    - le fait que new EntierOrdonne() n'apparaît qu'une seule fois, et donc qu'un seul objet est créé.
    - la déclaration d'une variable de type EntierOrdonne, qui permet de stocker l'objet créé et de s'en servir à chaque fois qu'on le veut.
    - que cette déclaration de variable EntierOrdonne ressemble énormément aux déclarations de variables ArrayList. C'est normal, ce sont des classes, dont on crée des objets. Ça marche pareil.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur Web
    Inscrit en
    Décembre 2013
    Messages
    243
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2013
    Messages : 243
    Par défaut
    Merci beaucoup,
    ça marche super.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    EntierOrdonne listOrd = new EntierOrdonne();
     
        for (int i = 0; i <= nbre; i++) {
    	x = scan.nextInt();
    	listOrd.insertion(x);
       }
     
       listOrd.Affichage();

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

Discussions similaires

  1. [TPW] Erreur lors de l'ajout d'un élément dans une liste chaînée triée
    Par sangimed dans le forum Turbo Pascal
    Réponses: 5
    Dernier message: 18/01/2013, 21h37
  2. NullPointerException ajout d'un élément dans une Map
    Par pandora19 dans le forum Collection et Stream
    Réponses: 1
    Dernier message: 11/11/2012, 16h45
  3. insérer et décaler des élèments dans une ArrayList
    Par biljava dans le forum Collection et Stream
    Réponses: 13
    Dernier message: 21/07/2011, 10h05
  4. Réponses: 1
    Dernier message: 31/05/2009, 22h29
  5. Ajout d'un élément dans une JList
    Par michaeljeru dans le forum Composants
    Réponses: 4
    Dernier message: 03/03/2009, 14h40

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