Невозможно поместить значения в HashMap <String, double> - PullRequest
0 голосов
/ 17 марта 2019

Есть идеи, почему я не могу put в эту хэш-карту?

public class UserImpl implements User{
   HashMap<String, Double> videoRecords = new HashMap<>();

   @Override
   public void updateVideoRecord(String currentVideo, double seconds) {
       videoRecords.put(currentVideo, seconds);
   }
}

Отладчик IntelliJ показывает, что currentVideo и seconds передают значение, но HashMap videoRecords не делает 'т обновление.Вот что я использовал, чтобы обнаружить, что HashMap не принимает значения:

@Override
public void updateVideoRecord(String currentVideo, double seconds) {  
    System.out.println(this.videoRecords);
    this.videoRecords.put(currentVideo, seconds);
    System.out.println(this.videoRecords);
}

Забавно, что если я инициализирую HashMap внутри этого метода, значения успешно помещаются вэто.

Ответы [ 2 ]

1 голос
/ 17 марта 2019

Если бы вы могли добавить свой код бегуна или хотя бы метод main(), это было бы полезно.В любом случае, я пытался воспроизвести вашу проблему, но, похоже, она работает без проблем или чего-то подобного.

Здесь я использовал ту же реализацию класса UserImpl, что и вы, я просто добавил метод get, который возвращаетсопоставление с методом main:

import java.util.*;
import java.util.HashMap;

public class UserImpl implements User {
   HashMap<String, Double> videoRecords = new HashMap<>();

   @Override
   public void updateVideoRecord(String currentVideo, double seconds) {
       videoRecords.put(currentVideo, seconds);
   }

   public HashMap<String, Double> getRecords() {
       return videoRecords;
   }
}

, который реализуется из этого интерфейса 'Mock', потому что в вашей реализации вы переопределяете метод updateVideoRecord().

Очевидно, что вMain Я создаю объект класса UserImpl, помещает новую запись в HashMap и печатает до и после помещения.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        UserImpl userImpl = new UserImpl(); 
        HashMap<String, Double> records = userImpl.getRecords();
        System.out.println("The size of the map is " + records.size());
        System.out.println("Initial Mappings are: " + records); 
        userImpl.updateVideoRecord("theCurrentVideo", 360);
        System.out.println("The size of the map is " + records.size());
        System.out.println("Initial Mappings are: " + records); 
   }
}

Наконец, здесь вы можете видеть, что вывод выглядит полностью как нужнопоэтому я не вижу твоей проблемы.Поэтому, если бы вы могли более подробно рассказать о вашей проблеме, возможно, я мог бы помочь вам лучше.Если нет, то я надеюсь, что это поможет вам решить вашу проблему.

kareem@Kareems-MBP:Desktop$ javac Main.java
kareem@Kareems-MBP:Desktop$ java Main
The size of the map is 0
Initial Mappings are: {}
The size of the map is 1
Initial Mappings are: {theCurrentVideo=360.0}
0 голосов
/ 17 марта 2019

Спасибо за ваши сообщения. Я пытался отлаживать это часами, и, основываясь на ваших ответах, нет причин, чтобы этот код не работал. Ты прав.

Я пытаюсь расширить чужой существующий код, из-за которого мой код не работает. HashMap videoRecords был Serialized для файла, но в процессе toString() метод стирал все записи в его стороне.

Мне потребовались часы, чтобы понять это ...

@ Карим Джейроуди: спасибо, что указали мне правильное направление.

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