У меня есть коллекция, которая выглядит ниже, и я хочу отфильтровать все, кроме дат, которые не являются концом месяцев.Confused by Java8 Collectors.toMap
2010-01-01=2100.00,
2010-01-31=2108.74,
2010-02-01=2208.74,
2010-02-28=2217.92,
2010-03-01=2317.92,
2010-03-31=2327.57,
2010-04-01=2427.57,
2010-04-30=2437.67,
2010-05-01=2537.67,
2010-05-31=2548.22,
2010-06-01=2648.22,
2010-06-30=2659.24,
2010-07-01=2759.24,
2010-07-31=2770.72,
2010-08-01=2870.72,
2010-08-31=2882.66,
2010-09-01=2982.66,
2010-09-30=2995.07,
2010-10-01=3095.07,
2010-10-31=3107.94,
2010-11-01=3207.94,
2010-11-30=3221.29
У меня есть следующие критерии фильтрации. frequency.getEnd
возвращает LocalDate
, соответствующий концу месяца для данного LocalDate
.
.filter(p -> frequency.getEnd(p.getKey()) == p.getKey())
Так что теперь я думаю, что мне нужно преобразовать этот отфильтрованный поток обратно в карту. И я думаю, что я использую коллекционер для этого. Таким образом, я добавляю:
.collect(Collectors.toMap(/* HUH? */));
Но я не знаю, что делать с Collectors.toMap
. Примеры чтения оставляют меня в замешательстве. Вот мой текущий код, который, очевидно, не работает.
TreeMap<LocalDate, BigDecimal> values = values.entrySet()
.stream()
.filter(p -> frequency.getEnd(p.getKey()) == p.getKey())
.collect(Collectors.toMap(/* HUH? */));
OP хочет 'TreeMap' в качестве вывода, а не текущий по умолчанию' HashMap'. – Tunaki
Я не вижу, что он специально хочет TreeMap. Он показывает пример, который использует TreeMap, что не делает его требованием. – Tom