[JAVA] ArrayList et multiples éléments
Fermé
EminoMeneko
Messages postés
2435
Date d'inscription
jeudi 24 janvier 2008
Statut
Membre
Dernière intervention
23 mai 2018
-
25 oct. 2011 à 16:34
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 - 26 oct. 2011 à 02:25
EminoMeneko Messages postés 2435 Date d'inscription jeudi 24 janvier 2008 Statut Membre Dernière intervention 23 mai 2018 - 26 oct. 2011 à 02:25
A voir également:
- [JAVA] ArrayList et multiples éléments
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
- Télécharger jeux java gameloft gratuit - Forum Mobile
- Photoshop elements gratuit - Télécharger - Retouche d'image
1 réponse
KX
Messages postés
16753
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 019
25 oct. 2011 à 16:58
25 oct. 2011 à 16:58
As-tu déjà entendu parler de ce que c'est qu'une classe ? De la programmation objet ?
Effectivement les ArrayList permettent de contenir un seul objet à chaque fois, mais celui-ci peut-être de n'importe quelle classe (donc InfoImage si tu veux), c'est d'ailleurs exactement pour faire ce genre de choses que sont faites les Collection...
Si on devait se contenter que des types élémentaires on n'irait pas bien loin.
Mais il n'y a pas que les ArrayList dans les Collection, il y a peut-être des conteneurs plus adaptés à tes besoins. Tout dépend ce que tu veux faire exactement.
Effectivement les ArrayList permettent de contenir un seul objet à chaque fois, mais celui-ci peut-être de n'importe quelle classe (donc InfoImage si tu veux), c'est d'ailleurs exactement pour faire ce genre de choses que sont faites les Collection...
Si on devait se contenter que des types élémentaires on n'irait pas bien loin.
Mais il n'y a pas que les ArrayList dans les Collection, il y a peut-être des conteneurs plus adaptés à tes besoins. Tout dépend ce que tu veux faire exactement.
Modifié par EminoMeneko le 25/10/2011 à 17:18
Ce que je cherche à faire avec ce mini projet c'est mettre en pratique une théorie qui date un peu. Je ne voudrais pas tout mélanger et ça n'est pas le but pour le moment mais maintenant j'entends parler de Design Pattern et je trouve ça simple sur le principe mais dès qu'on rentre dans le détail ça devient un peu compliqué pour moi. Bref, je ne vais pas griller les étapes. Pour le moment je voudrait réfléchir à mon petit projet avant de passer à la phase de codage.
Merci.
25 oct. 2011 à 17:28
Dans tous les cas c'est des Collection, donc il te faudra une classe pour les manipuler (ex: InfoImage)
Mais si les listes sont assez simples à utiliser parfois il est plus efficace d'utiliser d'autres types de Collection, regarde ce que sont les Set, Tree, ou Map.
25 oct. 2011 à 18:07
En d'autres termes.
Parmi les infos que je veux stocker dans ma collection il y a le nom de fichier.
Donc en gros en ouvrant un dossier ou un fichier, je souhaite remplir cette fameuse collection avec l'ensemble des images valables dans cette même arborescence. Ensuite pour l'affichage je me base sur les informations récoltées pour allouer et libérer les ressources.
J'imagine bien que ça signifie un affichage des image peut-être un peu plus lent mais je préfère cette solution à celle que j'ai pu voir qui consiste à remplir un ArrayList avec les objets Image.
Imaginez qu'il y ait de très grosses images et/ou qu'elles soient nombreuses. Dois-je vraiment occuper autant de mémoire ?
Alors que les informations que je récolte sont infimes en taille par rapport aux images elles mêmes.
Une fois que la collection est remplie elle ne doit pas vraiment bouger beaucoup sauf si on décide de supprimer une ou plusieurs images.
Enfin bref je pense toujours aux ArrayList mais je dois continuer à lire le chapitre sur les collections.
Merci.
25 oct. 2011 à 19:07
Tant que tu ne stockes que les informations sur les images, et pas leur contenu, ça devrait aller.
J'ai du mal à saisir en quoi consiste ton "affichage dynamique", et ton "ensemble d'images valables", peut-être veux-tu faire une visionneuse à la manière de Cooliris.
Le gros inconvénient des listes c'est que le parcours est linéaire, et que si l'accès aux extrémités sont très rapides, si tu veux accéder, ajouter, ou supprimer des valeurs en plein milieu, ce sera plus coûteux d'utiliser une liste qu'une HashSet par exemple. Le vrai avantage de la liste est de conserver l'ordre d'insertion des éléments mais je ne sais pas si c'est vraiment important dans ton cas.
Peut-être te faudra-t-il construire ta propre Collection en utilisant par exemple en cache des HashSet<Key,Collection<InfoImage>> pour accéder "immédiatement" à toutes les images qui correspondent à une certaine propriété. Par exemple une HashSet<Integer,List<InfoImage>> qui pour chaque nHauteur différente aura une liste de toutes les images de la hauteur spécifiée.
Ce serait vraiment parlant si tu faisais une recherche par mots clés où chaque image pourrait avoir plusieurs mots clés. Tu n'aurais alors pas à parcourir toutes tes images pour regarder si le mot-clé correspond, mais juste à appeler ta HashSet avec le mot clé correspondant.
Remarque : les objets ne seront pas dupliqués, tu travailleras sur des références, de même qu'en C/C++ tu travaillerais sur des pointeurs.
26 oct. 2011 à 02:25
J'ai comme tout le monde mes mots à moi et par affichage dynamique je parle en fait simplement de charger l'image à partir des informations que je compte stocker. Donc en gros le dynamique n'en est peut-être pas tellement un pour le commun des mortels mais il s'agit simplement de charger l'image sélectionnée non pas depuis un tableau d'images mais depuis le disque et lors de l'affichage d'une autre image je pense libérer la ressource et allouer ce qu'il faut pour afficher l'image suivante.
Par image valables je parle des formats GIF, JPEG et PNG pour le moment. Je ne compte pas faire un logiciel complet mais juste une petite appli pour me faire la main. Vraiment ça doit rester très simple dans un premier temps. J'estime qu'une personne douée en Java pourrait torcher le projet en 20 minutes (d'ailleurs j'ai fait ça en C# le mois dernier ça prend 5 minutes à faire) sinon moins mais pour moi c'est pour le moment une autre paire de manches... xD
Enfin bref, on va adopter l'approche "pelure d'oignon" d'abord voir petit et ensuite compléter si il y a de nouvelles idées. Pas besoin de rechercher quoi que ce soit dans l'idée que je m'en fait pour le moment. Si on veut je cherche plutôt à faire une visionneuse d'image qui ressemble à celle de Windows. Vraiment un truc tout simple.
Merci.