почему так решение проходит:
public static int getCountTheSameFirstName(HashMap<String, String> map, String name) {
//напишите тут ваш код
int count = 0;
for (String key : map.keySet()) {
if (map.get(key) == name)
count++;
}
return count;
}
public static int getCountTheSameLastName(HashMap<String, String> map, String lastName) {
//напишите тут ваш код
int count = 0;
for (String key : map.keySet()) {
if (key == lastName)
count++;
}
return count;
}
а вот так нет:
public static int getCountTheSameFirstName(HashMap<String, String> map, String name) {
//напишите тут ваш код
int count = 0;
for (String key : map.values()) { // ведь тут я получаю множество всех значений
if (map.get(key) == name) // почему для значения нужно писать МЭПточкаГЕТ(КЕЙ)
count++;
}
return count;
}
public static int getCountTheSameLastName(HashMap<String, String> map, String lastName) {
//напишите тут ваш код
int count = 0;
for (String key : map.keySet()) { // а тут получаю множество всех ключей
if (map.get(key) == lastName) // а для ключа нужно использовать только КЕЙ
count++;
}
return count;
}
Ilya
12 уровень
объясните пожалуйста
Архивный
Комментарии (5)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
--------Master
8 ноября 2018, 14:20
И на будущее: в редакторе есть кнопка code, придумана она не для красоты, а чтобы выкладывать код в нормальном человеческом виде.
0
Ilya
8 ноября 2018, 14:27
наверное я что-то не правильно понял. но ведь имена в таблице это значения, а фамилии ключи? в методе getCountTheSameFirstName мне не нужно перебирать значения? почему?
0
--------Master
8 ноября 2018, 14:33
Грубо говоря, у тебя рассмотренный цикл можно представить так:
В правильном фрагменте ты в обоих циклах перебираешь ключи, в неверном - цикл перебирает значения, их сразу и нужно сравнивать с именем, а ты их пытаешься использовать в качестве ключей.
В дополнение, объекты через == не сравниваются - это сравнение ссылок, а не содержимого 0
Ilya
8 ноября 2018, 14:38
да, спасибо, я позже уже исправил сравнение через equals.
значит вот так написано правильно?
return count;
} 0
--------Master
8 ноября 2018, 14:42
map.values - это уже сами по себе ЗНАЧЕНИЯ, их уже не надо получать через map.get. Возьми для наглядности добавь в цикле вывод каждого значения key в консоль, чтобы понять, как это происходит и что ты не так делаешь.
0