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 Java : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
Partager