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 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 13 juin 2014 à 19:15
KX Messages postés 16754 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 - 13 juin 2014 à 19:15
A voir également:
- ArrayList d'objets
- Site pour vendre des objets d'occasion - Guide
- Ryanair objets interdits - Guide
- Vous ne pouvez pas déplacer des objets en dehors de la feuille - Forum Photoshop
- Telecharger jeux d'objets cachés gratuit version complete en francais - Télécharger - Puzzle & Réflexion
- Déplacer des informations dans une autre feuille ✓ - Forum Excel
2 réponses
KX
Messages postés
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
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
16754
Date d'inscription
samedi 31 mai 2008
Statut
Modérateur
Dernière intervention
25 novembre 2024
3 020
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; }