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 :

Tableaux dynamiques et autres Listes, verteurs, etc


Sujet :

avec Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut Tableaux dynamiques et autres Listes, verteurs, etc
    Hello !

    Jau un petit souci de conception en java.
    J'aimerais manipuler des tableaux dynamiques genre : MaClasse[] .

    Ce tableaux n'a pas de taille definie, et je doit y ajouter /Supprimer des elements dedans.

    J'ai pour habitude sous Delphi de me baser sur un simple tableau avec des methodes Add/REmove. Je trouve ca plus simple dans bon nombre de cas que l'usage de classe listes diverses.

    PAr contre sous java il ne me semble pas qu'il soit possible de modifier la taille d'un tableau dynamiquement mais il faut passer par un tableaux temporaire et une copie des elements du tableau.

    N'existe t il pas un moyen de simplement allouer une case supplementaire a un tableau ?
    Sinon quelle est la classe / methode la plus simple (et surtout ultra legere) pour mettre en place une gestion de tableaux dynamique ....

  2. #2
    Membre Expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Par défaut
    Passe par une ArrayList. Pour les opérations d'ajout/suppression d'éléments en java, c'est bien mieux d'utiliser des listes plutôt que des tableaux.
    Voici un moyen de faire la conversion dans les 2 sens.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    MaClasse[] tab = ...;
    List<MaClasse> tabList = new ArrayList(Arrays.asList(tab));
    // ajout/suppression
    tab = tabList.toArray(new MaClasse[tabList.length]);
    A savoir que l'implémentation de ArrayList est basée sur l'utilisation d'un tableau d'objet.

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    Oui j'ai deja vu sur la FAQ les differnts types de listes et autres trucs du genre

    D'ailleur j'utilisait des listes sous Delphi.
    Mais selon les cas je preferais passer par des tableaux.

    CE qui me gene un petit peut c'est que les ArrayList sont a base de tableaux dont l'allocation se fait par buffer, c'est a dire par pack de N elements.
    Ca me gene un peut car je ne sais pas si on peut reelement controler la taille en memoire de ce tableaux interne ...

    Si il alloue 5 ou 6 elements la ou on en manipule des 100aines ca va pas changer grand chose, et au contraire, une centaine aloulé la ou on en manipule que 10 ca fait peut etre beaucoup de memoire pour rien non ?

    Copier les elements d'un tableaux a chaque ajout, ca fait beaucoup aussi ....

  4. #4
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Avec quasi toutes les listes tu as les moyens d'influer sur l'allocation. Par exemple, avec ArrayList : ArrayList(int initialCapacity), ou trimToSize().

    Par ailleurs dans Arrays, tu as les méthodes de la famille copyOf.

    Pour les types simples et de gros tableaux, tu peux avoir meilleur compte à utiliser les systèmes de Buffer.

    Sur le principe philosophique que les tableaux du langage sont de taille fixe, il me semble qu'il vient, historiquement, du choix de privilégier la sécurité des traitements sur l'optimisation (1- Don't optimize, 2- Don't optimize, 3- Specialists only : Don't optimize yet, ou à peu près). Je ne sais pas ce qu'en penserait Aristote, mais enfin c'est comme ça.

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/09/2014, 22h23
  2. tableaux dynamiques liès les uns au autres
    Par PLH81 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 30/08/2014, 19h50
  3. [CakePHP] Remplir dynamiquement une liste à partir d'une autre liste
    Par HELKARROUMI dans le forum Bibliothèques et frameworks
    Réponses: 0
    Dernier message: 29/04/2013, 12h58
  4. Réponses: 1
    Dernier message: 15/06/2011, 18h39
  5. [MySQL] Remplir une liste déroulante à partir d'une autre liste dynamique
    Par Sekigawa dans le forum PHP & Base de données
    Réponses: 25
    Dernier message: 31/12/2008, 08h54

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