Изменить значение LinkedList в HashMap - PullRequest
1 голос
/ 07 июля 2019

Мне нужно добавить новый объект в LinkedList внутри моего HashMap

Я пытался сохранить LinkedList во временной переменной, добавить видео к этому, а затем добавить список на карту с помощьюМетод put, но у меня та же проблема.

public void addVideo(String nameChannell, Video video)
{
    mappa.get(nameChannell).add(video);
}

public void printVideo()
{
    Iterator<String> itera=mappa.keySet().iterator();
    while(itera.hasNext())
    {
        String canale=itera.next();
        LinkedList<Video> lVideo=mappa.get(canale);

        System.out.println("\tCanale: "+canale);
        for(int i=0;i<lVideo.size();i++)
            System.out.println(lVideo.get(i).getNome());
    }
}

Основная функция для добавления видео в мою хэш-карту - addVideo, но когда я делаю это, видео добавляется ко всем моим ключам, а не толькона nameChannel ключ.Я думал, что проблема может быть в функции printVideo, но я не могу справиться с этим.

Ответы [ 2 ]

0 голосов
/ 07 июля 2019

Как уже упоминалось другими, вы должны иметь отдельные LinkedList в качестве значений, чтобы каждый ключ на вашей карте имел свой собственный список.Вы можете использовать Map::computeIfAbsent, чтобы избежать шаблонного кода для добавления фильма в правильный связанный список:

map.computeIfAbsent(nameChannell, s -> new LinkedList<>()).add(video);

Если ключ уже есть на карте - computeIfAbsent вернет ссылку на LinkedListдля этого ключа и будет вызван add(movie).Если ключа нет на карте, значение для нового ключа будет вычислено с использованием лямбда-выражения - s -> new LinkedList<>() и add(movie) будет выполнено для этого нового LinkedList.

0 голосов
/ 07 июля 2019

Ваш метод addVideo должен быть таким, как показано ниже, поскольку вы, вероятно, используете тот же List, что и значение, указанное в @JB Nizet

public void addVideo(String nameChannell, Video video) {
 if(mappa.containsKey(nameChannell))
 {
   mappa.get(nameChannell).add(video);
 }
 else {
   List<Video> videos = new BakedArrayList();
   video.add(video);
   mappa.put(nameChannell, videos);
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...