public class Person {
public String name;
public String phone;
public String email;
public Person(String name, String phone, String email) {
this.name = name;
this.phone = phone;
this.email = email;
}
}
_______________________________________________________________
Public class Phonebook {
private final HashMap<String, ArrayList<Person>> entries = new HashMap<>();
public void add(String name, String phone, String mail) {
if (entries.containsKey(name)) {
ArrayList<Person> persons = entries.get(name);
persons.add(new Person(name, phone, mail));
} else {
ArrayList<Person> persons = new ArrayList<>();
persons.add(new Person(name, phone, mail));
entries.put(name, persons);
}
}
Есть вот такой код. Конструктор в этом классе получается по умолчанию, значит. Если я правильно понимаю, то при создании объекта данного класса, создается мапа, у которой ключом является строка, значением по ключу является список объектов класса Person. В классе Phonebook есть метод add, который в качестве параметров принимает 3 строки, в нем идет проверка, содержится ли в мапе ключ (name)
А вот далее непонятно ArrayList<Person> persons = entries.get(name); - как может присваиваться одно значение целому списку??
Andrew
1 уровень
объясните пожалуйста
Обсуждается
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Wladyslaw Java Developer Master
3 февраля 2022, 19:49
значением по ключу является список объектов класса Person
Ты ж сам ответил)
+2
Andrew
3 февраля 2022, 19:56
то есть такая запись это нормально?
0
Wladyslaw Java Developer Master
3 февраля 2022, 20:00
Да.
У тебя в мапе значение - список персонов.
Соответственно гет тебе вернет список персонов.
Ты создал переменную соответствующего типа и туда присвоил то что тебе вернет гет.
Никаких проблем.
+2
Andrew
4 февраля 2022, 20:08
спасибо, посоздавал, поковырял, повыводил на экран) вроде понял)
0