Добрый день. Программа должна выдавать ключ и несколько значений по этому ключу, но значения выводятся в виде кода: [{Person@1b6d3586=[Phone@4554617c, Phone@74a14482]}] Как вывести в стандартном виде?
public class Task2 {
public static void main(String[] args) {
Map<Person, List<Phone>> personPhone = new HashMap<Person, List<Phone>>();
personPhone.put(new Person("Иван", "Иванов"), Arrays.asList(new Phone(88002000500L), new Phone(88002000500L)));
System.out.println(Arrays.asList(personPhone));
}
}
class Phone {
public long numberPhone;
public Phone(long numberPhone) {
this.numberPhone = numberPhone;
}
}
class Person {
public String name;
public String lastName;
public Person(String name, String lastName) {
this.name = name;
this.lastName = lastName;
}
}
В класс Person и Phone добавить метод toString()
Person:
@Override
public String toString() {
return "Person [name=" + name + ", lastName=" + lastName + "]";
}
Phone:
@Override
public String toString() {
return "Phone [numberPhone=" + numberPhone + "]";
}
Или обработайте Map циклом:
for (Entry<Person, List<Phone>> entry : personPhone.entrySet()) {
Person person = entry.getKey();
List<Phone> phones = entry.getValue();
... Распечатываем удобным способом
}
Попробуйте так:
personPhone.entrySet().forEach(
entry -> entry.getValue().forEach(
phone -> {
Person person = entry.getKey();
System.out.println(person.name + " " + person.lastName + " " + phone.numberPhone);
}
)
);
Продвижение своими сайтами как стратегия роста и независимости