Поскольку вы используете потоки для упрощения кода, вы также можете сделать следующее.
Вместо того, чтобы делать
List<Weather> entries;
entries = new ArrayList<Weather>();
if (weatherData.get(date) == null) {
entries.add(weather);
weatherData.put(date, entries);
} else {
entries = weatherData.get(date);
entries.add(weather);
}
Вы можете просто сделать
weatherData.computeIfAbsent(date, k->new ArrayList<>()).add(weather);
Он говорит, что если ключа date
нет, введите новый ArrayList
в качестве значения. В любом случае верните value
. Поскольку значение - это list
, которое было либо только что введено, либо уже есть, вы можете просто добавить экземпляр weather
в список.
Компилятор уже знает тип списка, поскольку он получил это из ваш экземпляр NavigableMap
.
Если вы хотите сначала проверить его, попробуйте этот простой пример.
Map<Integer,List<Integer>> map = new HashMap<>();
System.out.println(map);
map.computeIfAbsent(10, k-> new ArrayList<>()).add(20);
System.out.println(map);
map.computeIfAbsent(10, k-> new ArrayList<>()).add(30);
System.out.println(map);
computeIfAbsent доступен с Java 1.8