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 :

Problème removeRange méthode non visible


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut Problème removeRange méthode non visible
    Bonjour,

    Je crée une ArrayList et ensuite j'essaie d'appliquer la méthode removeRange

    La compliation m'indique que la méthode n'est pas visible et je ne parviens pas à trouver la solution

    Merci de me répondre
    Voici le code

    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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    package collections_Huchard;
     
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.Random;
    import java.util.Vector;
     
    class Chevre 
    {
    	int nombre;
    	int longueur;
    	Chevre (int i, int j)
    	{
    	nombre = i;
    	longueur = j;
    	}
     
    	public String toString(){
    	return "Chevre :"+nombre+":"+longueur;
    	}
    }
     
    public class List_Array_List	
    {
    	public static void main(String[] args)
    	{
    	ArrayList <Chevre> c = new ArrayList<Chevre>();
    	Random r = new Random();
    	for (int i=0;i<10;i++)
    	c.add(new Chevre(r.nextInt(100),r.nextInt(10)));
     
    	System.out.println("Collections non triée");
    	for(int i=0; i<c.size();i++)
    	System.out.println(i + " " +((Chevre) c.get(i)).nombre+":"+((Chevre) c.get(i)).longueur);  // Ok ne sert pas de toString()
    	//System.out.println(i + " " +((Chevre) c.get(i)));   // Ok se sert de toString()
     
    	//Methode removeRange
    	//-------------------
    	c.removeRange(3,8);
     
    	}
    }
     
    /*
     
    */

  2. #2
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    La méthode removeRange est une méthode de niveau de visibilité "protected". Tu peux l'utiliser en procédant de cette manière :
    1. Créer une classe A étendant ArrayList
    2. Utiliser cette classe A à la place d'une ArrayList
    3. Utiliser removeRange sur la classe A

    En tout cas, utilise plutôt la méthode subList. Tu peux en voir un exemple sur ce fil.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut
    Ok merci explication claire mais lacune de ma part

    class Chevre extends ArrayList : OK

    mais comment remplir Chevre avec un ArrayList : ?

    Chevre c = new ArrayList(); NOT OK

  4. #4
    Modérateur

    Avatar de Robin56
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Juin 2009
    Messages
    5 297
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Juin 2009
    Messages : 5 297
    Par défaut
    Citation Envoyé par michelp3 Voir le message
    Ok merci explication claire mais lacune de ma part

    class Chevre extends ArrayList : OK

    mais comment remplir Chevre avec un ArrayList : ?

    Chevre c = new ArrayList(); NOT OK
    Voici ce que je te proposais comme solution :

    1. Utiliser removeRange()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    // Création
    public class ArrayListCustom extends ArrayList {
      public void removeRange(int fromIndex, int toIndex) {
        super.removeRange(fromIndex, toIndex);
      }
    }
     
    // Utilisation
    ArrayListCustom array = new ArrayListCustom();
    array.removeRange(3,8);
    2. Utiliser subList()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    ArrayList array = new ArrayList();
    array.subList(3, 8).clear();
    Dans tout les cas, si removeRange est "protected", ceci doit signifier qu'il est déconseillé de l'utiliser.
    Responsable Java de Developpez.com (Twitter et Facebook)
    Besoin d'un article/tutoriel/cours sur Java, consulter la page cours
    N'hésitez pas à consulter la FAQ Java et à poser vos questions sur les forums d'entraide Java
    --------
    Architecte Solution
    LinkedIn : https://www.linkedin.com/in/nicolascaudard/

  5. #5
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 585
    Par défaut
    Citation Envoyé par Robin56 Voir le message
    Dans tout les cas, si removeRange est "protected", ceci doit signifier qu'il est déconseillé de l'utiliser.
    Pas déconseillé, inutile.
    Le système de collections de Java a déjà prévu un truc pour traiter des intervalles de List, quelles qu'elles soient (ArrayList, LinkedList, emptyList(), singletonList(), Arrays.asList(), tout.)

    Ce truc, c'est subList(). Il est inutile d'avoir autre chose.
    (Et il est vrai que les choses inutiles sont génératrices d'erreurs, ce qui, du coup, est ma foi déconseillé.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    315
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2009
    Messages : 315
    Par défaut
    OK ca marche avec subList(3,8).clear();

    mais pour remove(3,8);
    rappel : au départ , je veux constituer une collection de Chevre pour l'occasion :
    ArrayList <Chevre> c = new ArrayList<Chevre>();
    J'ajoute des éléments ...
    et je souhaite effacer les elements de 3 à 8

    Tu extends la classe Chevre et tu redéfinis removeRange avec super
    Jusque là OK mais

    ta ligne ArrayListCustom array = new ArrayListCustom();

    ne permet pas de constituer une collection

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

Discussions similaires

  1. Réponses: 7
    Dernier message: 11/10/2011, 21h08
  2. Problème enregistrement d'une figure non visible
    Par Namenlos dans le forum Interfaces Graphiques
    Réponses: 5
    Dernier message: 17/03/2010, 17h21
  3. Listview Item non visible via méthode ContainerFromItem
    Par richton95 dans le forum Windows Presentation Foundation
    Réponses: 6
    Dernier message: 03/09/2009, 13h45
  4. Réponses: 4
    Dernier message: 15/05/2008, 14h47
  5. Réponses: 1
    Dernier message: 03/10/2007, 13h24

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