Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Java Новый топик    Ответить
 Преобразование Map  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 2018
Подскажите идею для трансформации MAP

Что имеется
public enum KeyEnum{
value1,
value2;
}


Мне надо преобразовать по ключу value1

Map<String,LocalDate> в Map<LocalDate, Map<KeyEnum,LocalDate>>


        Map<String, LocalDate> map1 = new HashMap<>();
        map1.put("value1", LocalDate.now());
        map1.put("value2", LocalDate.now()
                .plusDays(5));
        Map<String, LocalDate> map2 = new HashMap<>();
        map2.put("value1", LocalDate.now()
                .plusDays(5));
        map2.put("value2", LocalDate.now()
                .plusDays(15));

        List<Map<String, LocalDate>> mapList = Arrays.asList(map1, map2);



Что есть сейчас
HashMap<LocalDate, ArrayList<Map<String, LocalDate>>>  newMap= mapList.stream()
                .collect(
                        Collectors.groupingBy(
                                e -> {
                                    return                                             e.get("value1");
                                },
                                HashMap::new,
                                Collectors.toCollection(ArrayList::new))
                );


Как получить KeyEnum вместо String
И вместо ArrayList -> List

Сообщение было отредактировано: 3 июн 21, 17:25
3 июн 21, 17:34    [22331029]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
mayton
Member

Откуда: loopback
Сообщений: 51389
По идее ArrayList и так является List. Поменяй в дженерике и все должно компилироваться.
3 июн 21, 17:44    [22331037]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 2018
mayton,

Неа =(
Теоретически можно использовать Collectors.toCollection(ArrayList::new)

Но мне важно как переделать

Map<String,LocalDate> в Map<LocalDate, Map<KeyEnum,LocalDate>>

С заменой типов
3 июн 21, 18:56    [22331064]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
-=Koba=-,
На выходе же дублирование инфы будет
3 июн 21, 19:24    [22331075]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Мапа имеет смысл если ключи уникальны.
Далее ты две мапы сливаешь в один список list.
Что с уникальностью?
Напрашивается обе мапы слить В ОДНУ или вынуть ил мап и слить в список.
3 июн 21, 19:39    [22331084]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
-=Koba=-


Как получить KeyEnum вместо String
И вместо ArrayList -> List

нужно уточнять где ты хочешь KeyEnum и где List
а лучше показать то что у тебя входит и что ты хочешь получить на выходе
например List<Foo> на вход
хочу на выход Map<String,FooEnum>
где структура Foo
public class Foo{
private String name;
private FooEnum;


а пока не очень понятно если честно что тебе надо по факту
3 июн 21, 21:32    [22331107]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 2018
PetroNotC Sharp
Мапа имеет смысл если ключи уникальны.
Далее ты две мапы сливаешь в один список list.
Что с уникальностью?
Напрашивается обе мапы слить В ОДНУ или вынуть ил мап и слить в список.

Будет уникальный
3 июн 21, 21:32    [22331108]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
-=Koba=-
Member

Откуда: Минск
Сообщений: 2018
Приходит

List<Map<String, V>>


Хочу сформировать из него

Map<V, Map<String, V>>


По Value ключа value1 - оно будеи уникальным, уже решили это


Также у меня есть enum - KeyEnum и я хочу заменить вск String на KeyEnum

Map<V, Map<KeyEnum, V>>


Начальный
        Map<String, LocalDate> map1 = new HashMap<>();
        map1.put("value1", LocalDate.now());
        map1.put("value2", LocalDate.now()
                .plusDays(5));
        Map<String, LocalDate> map2 = new HashMap<>();
        map2.put("value1", LocalDate.now()
                .plusDays(5));
        map2.put("value2", LocalDate.now()
                .plusDays(15));


Итоговый
LocalDate.now().                    -   "value1", LocalDate.now()
                                                 "value2", LocalDate.now().plusDays(5)
LocalDate.now().plusDays(5)  -   "value1", LocalDate.now().plusDays(5)
                                                "value2", LocalDate.now().plusDays(15)
3 июн 21, 21:59    [22331114]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
asv79
Member

Откуда: Тверь
Сообщений: 3319
-=Koba=-,ты пишешь
Мне надо преобразовать по ключу value1

Map<String,LocalDate> в Map<LocalDate, Map<KeyEnum,LocalDate>>

тут нет никаких листов ,что надо то в итоге я так и не понял
3 июн 21, 22:05    [22331116]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
-=Koba=-,
хмммм....
-=Koba=-
Также у меня есть enum - KeyEnum и я хочу заменить вск String на KeyEnum

не понял зачем. Для создания уникальности?
Мапа1:
key1=классДата
key2=классДата

Мапа2:
key1=классДата

Мапа3:
key1=классДата
key6=классДата

Вариан1
Слей всё в одну мапу4 меняя ключи для уникальности
key1=классДата
key2=классДата
2_key1=классДата
3_key1=классДата
3_key6=классДата
Или ключи нельзя менять?

Вариант2
Map<Int, Map<String, дата>>
12 = <key1=классДата>
123 = <key1=классДата>

12 и 123 это счетчик айди как в бд. Сгенерировать уникальный.
3 июн 21, 22:56    [22331140]     Ответить | Цитировать Сообщить модератору
 Re: Преобразование Map  [new]
PetroNotC Sharp
Member

Откуда:
Сообщений: 8254
Ну и по поводу перечислимого.
Если я правильно понял задумку, то лишнее добавлять его.
Сама мапа с уникальными ключами и есть перечислимое.
Достать из мапы все key это по факту перечислимое.
Удачи!
3 июн 21, 23:06    [22331143]     Ответить | Цитировать Сообщить модератору
Все форумы / Java Ответить