создание хэш-карты для конкретного условия в Java - PullRequest
0 голосов
/ 16 сентября 2018

Я пытаюсь создать хэш-карту:

{Integer, List<Integer>}.

Например, у меня есть следующий набор: Numbers {0,1,3,4,5 0,1,4,5,60,1,6,7,8 1,2,5,6,7 1,2,4,5,6}

Мне нужно создать хэш-карту с первым значением в приведенном выше ключе в качестве ключапри добавлении значений в списки примерно так: hashmap = [0 = {1,3,4,5}, {1,4,5,6}, {1,6,7,8}] [1 = {2,5,6,7}, {2,4,5,6}]

и т. Д.

Я пересекаю множество.Если первое значение отличается от предыдущего, мне нужно создать новый список и начать сохранение.В противном случае мне нужно добавить значения в ранее созданный список.

У меня проблемы с созданием нового списка.Если я сделаю что-то вроде этого:

    int prev = 0;
    for(Number n : Numbers)
    {
        int current = n;
        if(prev_first != current)
        {
            List<Integer> l = new Arraylist<>();
            hashmap.out(current, l);
            l.add(n);
        }
        else
        {
            l.add(n);
        }
    }

Беда в том, что компилятор не видит список 'l' и говорит, что он не может быть инициализирован для условия else.

Как я могурешить это?

Спасибо и привет, Смита.

Ответы [ 2 ]

0 голосов
/ 16 сентября 2018

В основном l существует только в if -условии.else не видит этого.Попробуйте:

int prev = 0;
for(Number n : Numbers)
{
    int current = n;
    List<Integer> l = new Arraylist<>();
    if(prev_first != current)
    {            
        hashmap.out(current, l);
        l.add(n);
    }
    else
    {
        l.add(n);
    }
}
0 голосов
/ 16 сентября 2018

Вы создаете список в операторе if. Поэтому вы не можете получить доступ к списку из оператора else. Просто создайте список перед оператором if, и компилятор перестанет жаловаться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...