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 :

Manipulation des tableaux


Sujet :

Java

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2011
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

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

    Informations forums :
    Inscription : Juillet 2011
    Messages : 29
    Points : 26
    Points
    26
    Par défaut Manipulation des tableaux
    Bonjour,

    Je veux supprimer des éléments d'un tableau tout en diminuant sa taille en même temps. De plus, je ne veux pas utiliser un autre tableau.
    Y a-t-il un une déclaration spécifique pour un tel tableau ( par exemple ArrayList ou ... ) ou des méthodes spécifique à utiliser ?
    Y a-t-il quelqu'un qui peut m'aider ?

    Merci

  2. #2
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2007
    Messages
    697
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Janvier 2007
    Messages : 697
    Points : 1 241
    Points
    1 241
    Par défaut
    Bonjour,
    Tu peux utiliser une ArrayList ou un LinkedList (le choix se faisant en fonction des opérations que tu fais sur ton tableau). Lors de la suppression des éléments, la taille réelle du tableau utilisé en interne ne changera pas (=> capacity()) mais la taille de la liste (=> size()) sera bien décrémentée.

  3. #3
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    Peut-être que cette solution peut te convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String[] tab = new String[]{"A","B"};
    List<String> asList = Arrays.asList(tab);
    boolean removed = asList.remove("A");
    if(removed) {
      tab = asList.toArray(new String[asList.size()]);
    }

  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
    Points : 13 670
    Points
    13 670
    Par défaut
    Citation Envoyé par rgomes Voir le message
    Peut-être que cette solution peut te convenir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    String[] tab = new String[]{"A","B"};
    List<String> asList = Arrays.asList(tab);
    boolean removed = asList.remove("A");
    if(removed) {
      tab = asList.toArray(new String[asList.size()]);
    }
    M'ouai utilise plutôt une ArrayList, le traitement sera moins lourd. Car bon une ArrayList c'est ce que propose Java pour avoir un tableau de taille variable. Mais effectivement si tu veux garder un tableau, tu pourras utiliser la solution de rgomes.

    PS : ArrayList ou LinkedList bien sur.
    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 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Euh, non les gars, Arrays.asList() c'est typiquement prévu pour pas pouvoir faire ça.

    Arrays.asList() c'est une vue du tableau. Quand on change le tableau ça change la liste et quand on change la liste ça change le tableau. Et donc, vouloir changer la taille de la liste, c'est vouloir changer la taille du tableau, ce qui est pas possible, donc UnsupportedOperationException.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  6. #6
    Membre régulier Avatar de rgomes
    Homme Profil pro
    IT Developer JAVA Senior
    Inscrit en
    Juin 2004
    Messages
    128
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : IT Developer JAVA Senior
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2004
    Messages : 128
    Points : 76
    Points
    76
    Par défaut
    La finalité est supprimer un élément, et avoir un tableau avec la nouvelle seize. Donc aucun problème.

  7. #7
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par rgomes Voir le message
    La finalité est supprimer un élément, et avoir un tableau avec la nouvelle seize. Donc aucun problème.
    ... J'ai aucune idée de ce que tu essaies de justifier, mais le plus simple serait que tu essaies juste, et que tu te rendes compte que supprimer d'une Arrays.asList() ça marche pas.

    Parce que
    - Arrays.asList() retourne le tableau lui-même, vu comme une liste
    - retirer un élément d'une liste, c'est réduire sa taille de un.
    - un tableau a une taille constante. Ça signifie entre autre qu'on ne peut pas réduire sa taille de un. (Ni d'autre chose que zéro.)

    Je vois pas comment le dire plus clairement.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  8. #8
    Modérateur
    Avatar de kolodz
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    2 211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 211
    Points : 8 316
    Points
    8 316
    Billets dans le blog
    52
    Par défaut
    Je ne comprends pas votre problème de vouloir absolument stocker le tout sous la forme d'un tableau...
    1. Vous claquez un variable sous forme d'une List<String>.
    2. Vous utilisez la fonction toArray(T[] a)
    3. Si c'est trop compliquer à utiliser vous créez une fonction qui retourne votre liste sous forme de tableau.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public String[] getMyAttributeAsTable(){
         return myAttributeList.toArray(new String());
    }
    Ainsi on reste dans les clous en utilisant la représentation qu'il faut pour des listes de tailles variables. Et on a malgré tout notre sortie sous forme de tableau.

    Cordialement,
    Patrick Kolodziejczyk.

    Java Coding Rules :
    1. The javadoc is always right.
    2. If the rule 1 don't match, read the rule 1.
    Si une réponse vous a été utile pensez à
    Si vous avez eu la réponse à votre question, marquez votre discussion
    Pensez aux FAQs et aux tutoriels et cours.

Discussions similaires

  1. Manipulation des tableaux
    Par mine87 dans le forum Langage
    Réponses: 2
    Dernier message: 18/01/2010, 09h26
  2. [OPENOFFICE]Comment manipuler des tableaux de variants ?
    Par Unusual dans le forum API, COM et SDKs
    Réponses: 1
    Dernier message: 06/11/2008, 10h14
  3. Manipulation des tableaux
    Par circe dans le forum R
    Réponses: 8
    Dernier message: 15/10/2008, 11h34
  4. Manipulation des tableaux
    Par driss80 dans le forum Fortran
    Réponses: 4
    Dernier message: 18/01/2008, 08h51
  5. manipulation des tableaux
    Par amine556 dans le forum Informix
    Réponses: 4
    Dernier message: 26/11/2007, 15h20

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