При переборе HashMap выводится только одна пара

Всем привет!

Есть HashMap. В других case добавляю в нее пары ключ-значение. При попытке произвести поиск по ключу вручную получаю только одну пару, вторую и последующие не находит. Ошибка в цикле?

case 3:                                                 
//поиск по названию. ИЩЕТ ТОЛЬКО ОДНО ЗНАЧЕНИЕ! Надо искать причину

System.out.println("Введите название коктейля: ");
String n = scanner.nextLine();
for (Map.Entry<String, List<Object>> entry : receipts.entrySet()) {
  String key = entry.getKey();
  if (key.contains(n)) {
   // System.out.println("Ключ:");
   System.out.println(entry.getKey());
   // System.out.println("Значение:");
   System.out.println(entry.getValue());
   //continue;
   //go();
  } else System.out.println("Коктейля нет в системе"); 
  go();
} 

Ответы (1 шт):

Автор решения: Artem Gatchenko

Да, тут типичная ошибка, которая сбивает с толку. Ты выводишь "Коктейля нет в системе" на каждой итерации, если текущий ключ не совпадает. Поэтому даже если нужный коктейль есть, но он не первый в списке — сначала тебе покажут "нет в системе", а потом уже, может быть, и нужный коктейль.

System.out.println("Введите название коктейля: ");
String n = scanner.nextLine();
boolean found = false;

for (Map.Entry<String, List<Object>> entry : receipts.entrySet()) {
    String key = entry.getKey();
    if (key.contains(n)) {
        System.out.println(entry.getKey());
        System.out.println(entry.getValue());
        found = true;
    }
}
if (!found) {
    System.out.println("Коктейля нет в системе");
}
go();
→ Ссылка