Поиск ключа и печать значения из хэш-карты - PullRequest
0 голосов
/ 28 мая 2020

Я создал Hashmap со строковым ключом, представляющим memberID (который является числовым c значением), а значения являются экземплярами объектов Athlete, таких как имя, адрес и возраст.

Мне нужно написать метод, который принимает аргумент String, представляющий memberId, и возвращает связанные значения. Я борюсь с методом, в частности с тем, как вернуть только значения, связанные с ключом, если он найден. Мой метод, приведенный ниже, возвращает все значения Athlete после того, как определенная ключевая запись найдена, и я не уверен, как выделить только ключевые значения, где найдено совпадение. Может ли кто-нибудь указать мне правильное направление?

Спасибо!

public void findAthlete(String aNum)
   {     
      if(athletes.containsKey(aNum))
      {
            System.out.println("Key Value Present: " + athletes);
      }
      else 
      {

         System.out.println("Key Value not present within data");
      }
   }



Ответы [ 2 ]

0 голосов
/ 28 мая 2020

Попробуйте следующее: stadium - это экземпляр класса Stadium.

Optional<Athlete> op = stadium.getAthlete("some key");
if (op.isPresent()) {
     Athlete at = op.get();
} else {
   // take action if no athlete found
}

// within the Stadium class

Map<String, Athlete> athletes = new HashMap<>();
public Optional<Athlete> getAthlete(String key) {
    return Optional.ofNullable(athletes.get(key));
}


0 голосов
/ 28 мая 2020

Я действительно не понимаю ваш вопрос, но я думаю, что вы хотите извлечь значение из карты, поэтому допустим, у вас есть класс Athlete, ваш метод поиска должен вернуть это

public Athlete findAthlete(String aNum){...}

Затем вы можете вернуть спортсмена, если он найден:

return athletes.getOrDefault(aNum, null);

Вы можете вернуть null на пустом Athlete или Optional<Athlete> в зависимости от ваших потребностей

...