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 34 35 36
|
int year = 2014;
LocalDate firstDay = LocalDate.of(year, JANUARY, 1);
int max = 40;
int min = -10;
Random random = new Random((new Date()).getTime());
SortedMap<LocalDate, Float> map = Stream
// j'indique comment récupérer tous les jours depuis le 1er janvier 2014
.iterate(firstDay, day -> day.plus(1, ChronoUnit.DAYS))
// je limite le nombre de jour à ceux de 2014, c'est à dire 365
.limit(firstDay.lengthOfYear())
// je genere ma map à partir du stream des jours de l'année
.reduce(
Maps.newTreeMap(), // j'utilise guava, mais un new TreeMap<LocalDate,Float>() peut faire l'affaire
(SortedMap<LocalDate, Float> map1, LocalDate day) -> {
// je genere une température, la mulitplication par deux permet simplement d'avoir une echelle de 1/2 degree entre -10° et 40°,
// le +1 permet de générer 40°
float temperature = (random.nextInt(2 * (max - min)) + 1 + 2 * min) / 2f;
// j'ajoute dans ma map
map1.put(day, temperature);
return map1;
},
// ca ne sert à pas grand chose car je n'utilise pas de stream parallele, donc la combinaison du reduce n'ai pas utilisé.
(map1, map2) -> {
map1.putAll(map2);
return map1;
}
); |
Partager