Проблема с попыткой обернуть мою голову вокруг hashmap и получить код

#java

#java

Вопрос:

Итак, у меня возникли проблемы при попытке обернуть мою голову вокруг этой проблемы с кодированием: вот четыре вопроса, на которые они хотят, чтобы я ответил: Сколько раз ‘GetValue (…)’ будет выполняться со следующими входными данными, и каков будет результат?

(1) GetValue(«foo», 0);

(2) GetValue(«bar», 2);

(3) GetValue(«база», 0);

(4) GetValue(«fubar», 1);

Я знаю первые два ответа:

1) будет выполнен один раз и вернет 1

2) выполняется 1 раз и возвращает 3, но последние две проблемы (3,4) я не понимаю. Кто-нибудь может помочь уточнить, что именно делает этот код, и подсказать, каковы ответы?

Вот код:

 import java.util.HashMap;
import java.util.Map;

public class myClass {

private Map<String,Integer> map;

public myClass() {

map = new HashMap<>();

map.put("foo", 1);

map.put("bar", 3);

}

public int getValue(String input, int numRetries) throws Exception {

try {

  return map.get(input);

}

catch (Exception e) {

  if (numRetries > 3) {

    throw e;

  }

  return getValue(input, numRetries   1);

}

}
  

Заранее благодарю вас.

Комментарии:

1. Хитрость заключается в том, чтобы знать, что HashMap.get() делает для элемента, которого нет на карте.

2. Учтите, что a Map может содержать только Integer значения, но getValue его нужно возвращать int .

3. @John3136 Привет, Джон, я признаю, что это была одна из проблем, над которой я упорно боролся и проводил исследования. Не зная, что делает Hashmap.get(), когда элемента нет на карте

Ответ №1:

Код, на который вы правильно ответили в (1) и (2), пытается получить значение из HashMap с учетом его ключа.

Функция GetValue () является рекурсивной функцией, что означает, что она вызывает себя несколько раз на основе значения ‘numRetries’

(3) codes вызывает себя 4 раза (где количество попыток увеличивается с 0,1,2,3 до того, как предложение ‘> 3’ становится истинным и генерируется исключение)

(4) codes вызывает себя 3 раза (где количество попыток увеличивается с 1,2,3 до того, как предложение ‘> 3’ становится истинным и генерируется исключение)

Комментарии:

1. Большое вам спасибо! Я думаю, что я начинаю это понимать. Я думаю, что я просто слишком сильно продумал вопрос! Ха-ха.