ArrayList d'objets
Fermé
Littlecalpico
Messages postés
2
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
13 juin 2014
-
Modifié par Littlecalpico le 13/06/2014 à 17:39
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 13 juin 2014 à 19:15
KX Messages postés 16733 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 31 janvier 2024 - 13 juin 2014 à 19:15
A voir également:
- ArrayList d'objets
- Site pour vendre des objets d'occasion - Guide
- Sélectionner plusieurs objets excel - Forum Excel
- Afficher arraylist java ✓ - Forum Java
- Telecharger jeux d'objets cachés gratuit version complete en francais - Télécharger - Puzzle & Réflexion
- Impossible de charger les objets car ils ne sont pas disponibles sur cette machine ✓ - Forum Programmation
2 réponses
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
13 juin 2014 à 18:35
13 juin 2014 à 18:35
Bonjour,
Dans la classe java.nio.Files tu as déjà une méthode pour lire un fichier ligne par ligne et renvoyer une liste.
public static List<String> readAllLines(Path path, Charset cs) throws IOException
Dans la classe java.nio.Files tu as déjà une méthode pour lire un fichier ligne par ligne et renvoyer une liste.
public static List<String> readAllLines(Path path, Charset cs) throws IOException
Littlecalpico
Messages postés
2
Date d'inscription
vendredi 13 juin 2014
Statut
Membre
Dernière intervention
13 juin 2014
13 juin 2014 à 18:37
13 juin 2014 à 18:37
Je sais lire ligne par ligne en fait, je n'arrive juste pas à créer l'arraylist d'objets :(
KX
Messages postés
16733
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
31 janvier 2024
3 015
13 juin 2014 à 19:15
13 juin 2014 à 19:15
C'est quand même dommage d'avoir codé toi même ta classe ReadFile et sa méthode OpenFile alors qu'il existait déjà une méthode standard dans l'API pour le faire...
Sinon pour ton problème, effectivement il faut créer un nouvel objet à chaque fois, parce que si à chaque ajout dans ta liste tu mets toujours le même objet, alors une modification de n'importe quel objet de la liste va tous les modifier puisque c'est le même !
Remarque : évites d'avoir des attributs public dans ta classe KeyValuePair, il vaut mieux faire des accesseurs public pour manipuler les attributs privés. Ou alors il faudrait que les attributs public soit également final, ce qui garantirait qu'ils ne soient jamais modifiés.
De plus tu aurais pu paramétriser ta classe KeyValuePair pour avoir n'importe quel type comme clé et comme valeur plutôt que d'imposer String pour la clé et un nombre pour la valeur. Ça t'aurais permis de réutiliser ton code, ce qui est l'un des grands principes de la programmation objet.
Une dernière remarque pour la route : ArrayList c'est une implémentation, mais il vaut mieux utiliser l'interface qui se cache derrière (c'est à dire List) afin de cacher l'implémentation utilisé, seules les fonctionnalités de la List nous intéresse...
Sinon pour ton problème, effectivement il faut créer un nouvel objet à chaque fois, parce que si à chaque ajout dans ta liste tu mets toujours le même objet, alors une modification de n'importe quel objet de la liste va tous les modifier puisque c'est le même !
Remarque : évites d'avoir des attributs public dans ta classe KeyValuePair, il vaut mieux faire des accesseurs public pour manipuler les attributs privés. Ou alors il faudrait que les attributs public soit également final, ce qui garantirait qu'ils ne soient jamais modifiés.
De plus tu aurais pu paramétriser ta classe KeyValuePair pour avoir n'importe quel type comme clé et comme valeur plutôt que d'imposer String pour la clé et un nombre pour la valeur. Ça t'aurais permis de réutiliser ton code, ce qui est l'un des grands principes de la programmation objet.
Une dernière remarque pour la route : ArrayList c'est une implémentation, mais il vaut mieux utiliser l'interface qui se cache derrière (c'est à dire List) afin de cacher l'implémentation utilisé, seules les fonctionnalités de la List nous intéresse...
public class Pair<K,V> { private final K key; private final V value; public Pair(K key, V value) { this.key = key; this.value = value; } public K getKey() { return key; } public V getValue() { return value; } } public List<Pair<String,Double>> getFruit() throws IOException { ReadFile file = new ReadFile(fileName); String[] lines = file.openFile(); List<Pair<String,Double>> list = new ArrayList<Pair<String,Double>>(lines.length); for (String line : lines) list.add(new Pair<String,Double>(line, Math.random()); return list; }