Синтезируем LocalDateTime

  • 17
  • Недоступна
В методе convert нужно преобразовать Map в Set. Принцип преобразования: если в sourceMap было два таких элемента: 2018-05-31=[12:43:00.615424667, 08:35:29.212766273] 1998-01-31=[07:56:59.931458499] то в результате в множестве должно получиться три элемента: 2018-05-31T12:43:00.615424667 201
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (197)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
6lives
Уровень 8
7 мая, 11:59
норм задача, сразу стал вспоминать как работать с лямбдой) entrySet тоже вспомнил, но было лень читать как он работает. получилось так
sourceMap.forEach((k,v) -> v.forEach(e ->
    temp.add(LocalDateTime.of(k,e))
));
return temp;
MrFurion
Уровень 22
3 мая, 23:09
чисто сразу вспомнил про метод entrySet. правда не сразу смог реализовать его. Так как не совсем его полностью понимаю. Если кто-то может его объяснить доходчиво прошу помощи. + List<LocalTime> вот в этой вредине не мог получить второе значение для нового объекта. Пока допер что нужно ее в цикл.
Fanis
Уровень 23
22 апреля, 19:24
кто забыл как пользоваться HasMap ловите ну и добавляете в вашу Set LocalDateTime коллекцию дату через .add(LocalDateTime.of(dateArr.getKey(),time));
for(var dateArr: sourceMap.entrySet()){
    for (var time : dateArr.getValue()){

          }
rogueGodname
Уровень 26
8 апреля, 20:02
Отличная задача
20 марта, 20:46
Подсказка: Елементы коллекции Set не имеют порядка, по-этому, не удивляйтесь если у вас не всё по порядку :)
Vlad V
Уровень 35
16 марта, 22:04
Наконец то кайфовая задачка ))
leza
Уровень 20
11 марта, 08:27
Реальная крутая задачка, заставившая вспомнить Map и Set. Первые минут 30-40 ничего не понимал, но потом все раскидал на листочке и программу написал за 5 минут. Рекомендую поразмыслить серым веществом и решить задачку самостоятельно!
Kiril
Уровень 21
4 марта, 09:56
Задача реально классная. Не потому что она очень сложная, а потому что она в тот момент, когда прочитанное о множестве Set и мапе Map информация успела выветриться. Первый час никак не мог понять что из чего взять и куда деть. Отложил решение на следующий день. Утром другого дня за 10 минут всё стало на свои места (помог Дебагер по классу DateTimeGenerator, так как прояснил как берутся значения value). Дальше поднять методы из изученных лекций и решение готово.
Артур
Уровень 20
3 марта, 10:56
Более развернутый вариант официального решения:
Set<LocalDateTime> set = new HashSet<>();
        for (Map.Entry<LocalDate, List<LocalTime>> entry : sourceMap.entrySet()) {
            for (int i = 0; i < entry.getValue().size(); i++) {
                LocalTime localTime = entry.getValue().get(i);
                LocalDate localDate = entry.getKey();
                set.add(LocalDateTime.of(localDate, localTime));
            }
        }
Valentin
Уровень 28
1 апреля, 14:11
Также сделал)
Dab
Уровень 33
Expert
25 февраля, 13:15
Set<LocalDateTime> result = new HashSet<>();
        for (var tmp: sourceMap.entrySet()) {
            for (var tmp1: sourceMap.get(tmp.getKey())) {
                result.add(LocalDateTime.of(tmp.getKey(), tmp1));
            }
        }
        return result;
решил минут за 15
Nikita
Уровень 24
18 апреля, 07:07
Почти также решил в итоге, только 3-я строка по другому реализована:
for (var time : entry.getValue()) {
Хотя вначале не два объекта передал в LocalDateTime, а почему-то решил заполнить все время. Но потом вспомнил, что можно короче и читабельнее:
dateTimeSet.add(LocalDateTime.of(entry.getKey(), time));