Comme je l'avais fait au début, j'ai codé tes problèmes en utilisant les nouveautés de java 8 :
Pour récupérer les 10 jours les plus chaud de l'année :
Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 List<LocalDate> top10 = map.entrySet().stream() .parallel() .sorted((e1, e2) -> e2.getValue().compareTo(e1.getValue())) .limit(10) .collect( ArrayList::new, (list, e) -> list.add(e.getKey()), ArrayList::addAll);
et pour récupérer le mois le plus chaud de l'année :
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 Map<Month, List<Double>> monthTemperatures = map.entrySet().stream() .parallel() .collect(Collectors.groupingBy( e -> e.getKey().getMonth(), HashMap::new, Collectors.mapping(e -> e.getValue(), Collectors.toList()) ) ); Map.Entry<Month, Double> hottestMonth = monthTemperatures.entrySet().stream() .parallel() .collect( HashMap<Month, Double>::new, (mp, entry) -> { double average = entry.getValue().stream().mapToDouble(x -> x).average().getAsDouble(); mp.put(entry.getKey(), average); }, HashMap<Month, Double>::putAll ).entrySet().stream().max(Comparator.comparing(item -> item.getValue())).get();
Partager