Вызов Значения хэш-карты из другого метода

#java #hashmap

#Ява #хэш-карта

Вопрос:

Я пытаюсь вызвать значения хэш-карты из другого метода. Мне нужно, чтобы значения 1, "Twin", 200, 200 были напечатаны вместо "YES" того, когда TW был вызван ref . Однако имейте в виду, что я должен уйти setupMuseum как private . Я пробовал разные подходы, но каждый раз заканчивался ошибкой.

 private void setupMuseum() {  HashMaplt;String, MUSEUMgt;Museum= new HashMaplt;String, MUSEUMgt;();    Museum.put("TW", new MUSEUM(1, "Twin", 200, 200));   }   
 public String getMuseumDetails(String ref) {  if ("TW".equals(ref) ){  System.out.println("YES");      }else  return "!";    return "nNo such thing";  }   

Ответ №1:

Ваш setupMuseum() метод и так бесполезен. Он создает Map значение, которое даже не возвращается и которое также не является переменной экземпляра. Вам нужно вернуть созданное Map , а затем вы можете распечатать все, что там есть:

 private Maplt;String, MUSEUMgt; setupMuseum() {  HashMaplt;String, MUSEUMgt; Museum = new HashMaplt;String, MUSEUMgt;();  Museum.put("TW", new MUSEUM(1, "Twin", 200, 200));    return Museum; }  

Затем в вашем getMuseumDetails() методе вам нужно вызвать setupMuseum() и распечатать значения:

 public String getMuseumDetails(String ref) {  if ("TW".equals(ref) ){  HashMaplt;String, MUSEUMgt; museum = getMuseumDetails();  System.out.println(museum.get("TW"));  } else {  return "!";  }    return "nNo such thing"; // This is unreachable }  

Это предполагает, что оба метода находятся в одном файле, так что setupMuseum() их можно найти внутри getMuseumDetails() . Это также предполагает, что ваш MUSEUM класс имеет соответствующую toString() реализацию, которая фактически включает все его свойства.


В качестве дополнительных замечаний, пожалуйста, имейте в виду следующее:

  • Обычно переменные в Java следуют за snakeCase, поэтому вам следует назвать Museum как museum .
  • Классы Java не должны иметь названия в верхнем регистре, поэтому вы должны называть MUSEUM их как Museum .
  • Вы должны стремиться использовать интерфейсы Java вместо конкретных реализаций. Это означает, что вы должны использовать Maplt;String, MUSEUMgt; Museum = new HashMaplt;String, MUSEUMgt;(); вместо HashMaplt;String, MUSEUMgt; Museum = new HashMaplt;String, MUSEUMgt;(); того, чтобы объявлять переменную как a Map (интерфейс), а не как a HashMap (конкретная реализация).