Хранение и поиск значения ключа HashMap - PullRequest
0 голосов
/ 23 октября 2018

Чтобы проверить и продемонстрировать метод getNextValue, если hashmap хранит значения, если они отсутствуют, и извлекает их из карты, если она есть, я добавил основной класс под методом.Ожидается, что поведение будет состоять в том, что значение должно быть взято из hashmap, когда ключ 111 отправляется во второй раз, но каждое значение времени заносится в hashmap.Не уверен, какие последствия - либо Test инициализируется в каждом цикле, либо hashMap инициализируется каждый раз, из-за чего 111 не был доступен, когда 111 был отправлен во второй раз?

Ниже приведен код для справки.

    public List<String> getNextValue(Map<String,Object> requestparam){
        Map<String,List<String>> hashMap=new HashMap<>();
        String hashKey=requestparam.get("key");
        if(hashMap.containsKey(hashKey){
             return hashMap.get(hashKey

         } 
         else{
              List<String> value=new ArrayList<>();
              value.add("aa");
              hashMap.put(hashKey,value);
              return value;
          }

}

public static void main(String[] args){
     Test t=new Test();
     Map<String,Object> request=new HashMap<>();
     List<String> x=new ArrayList<>();
     x.add("111");
     x.add("111");
     x.add("222");
     for(String y:x){
        request.put("key",y)
        System.out.println(t.getNextValue(request));
}

1 Ответ

0 голосов
/ 23 октября 2018

При каждом вызове getNextValue вы создаете новую пустую HashMap.

public List<String> getNextValue(Map<String,Object> requestparam){
        Map<String,List<String>> hashMap=new HashMap<>();

Именно поэтому if(hashMap.containsKey(hashKey){ никогда не совпадает.

Включите вашу hashMapлокальная переменная в поле класса Test:

public class Test {

 private final Map<String,List<String>> hashMap=new HashMap<>();

 public List<String> getNextValue(Map<String,Object> requestparam){ 
  // your code with line below removed:
  // Map<String,List<String>> hashMap=new HashMap<>(); 
  ...
 }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...