Utilisation du Stream - Votre avis sur cette méthode
Bonjour à tous,
En fait j'ai écrit une méthode qui se base sur un fichier(chaque ligne est composée du nom du film et l'ensemble des acteurs séparés par ";") et ajouté chaque ligne dans une table de hachage avec comme clef le nom du film et valeur la liste des acteurs en utilisant Collectors.toMap.
voici le code : ma question est en commentaire couleur rouge
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
public class ActeursFilm {
private final String nameFilm;
private final List<String> acteurs;
public ActeursFilm(String nameFilm, List<String> acteurs){
this.nameFilm = nameFilm;
this.acteurs = acteurs;
}
public static void traiterActeur(String chemin) throws IOException{
Objects.requireNonNull(chemin);
Path path = Paths.get(chemin);
Map<String, List<String>> acteurs = new HashMap<>();
try(Stream<String> stream = Files.lines(path,StandardCharsets.ISO_8859_1)){
acteurs = stream
.map(ligne -> Arrays.asList(ligne.split(";")))
/*je me demande s'il n'y a pas un autre moyen de faire sans faire ce nouveau appel à map dans le but de
créer une instance pour chaque ligne.D'ailleurs est-ce que c'est nécessaire de créer une instance pour chaque ligne?*/
.map(list -> new ActeursFilm(list.get(0), list.subList(1, list.size())))
.collect(Collectors.toMap(ActeursFilm::getNameFilm, ActeursFilm::getActeursFilm));
/*stream.forEach(ligne -> {
List<String> listeActeur = Arrays.asList(ligne.split(";"));
acteurs.put(listeActeur.get(0),listeActeur.subList(1, listeActeur.size()));
});*/
}
acteurs.values().stream().forEach(System.out::println);
}
} |