#338 Изменяемый ключ в Map

Компании:
IT_ONE
Темы:
JavaКоллекции и обобщенияКод ревью

Что будет выведено на экран?

import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.Objects;
import java.util.TreeMap;

class Scratch {

    final class Person {
        String name;

        Person(String name) {
            this.name = name;
        }

        public String toString() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

        @Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;
            Person person = (Person) o;
            return Objects.equals(name, person.name);
        }

        @Override
        public int hashCode() {
            return Objects.hash(name);
        }
    }

    public static void main(String args[]) {
        checkMap(new HashMap<>());
        checkMap(new LinkedHashMap<>());
        checkMap(new TreeMap<>());
    }

    private static void checkMap(Map<Person,String> map) {
        Person ivan = new Person("Иван");
        Person peter = new Person("Пётр");
        Person maria1 = new Person("Мария");
        Person maria2 = new Person("Мария");
        map.put(ivan,ivan.name);
        map.put(peter,peter.name);
        map.put(maria1,maria1.name);
        map.put(maria2,maria2.name);
        //iterate and println
        for (Map.Entry<String,Person> entry:map.entrySet()) {
            System.out.println(entry);

            // Иван=Иван
        }
        //maria1.setName("Анна-Мария");
        maria2.setName("Анна-Мария");

        System.out.println(map.get(maria1));
        System.out.println(map.get(maria2));
        System.out.println("=====================================");
    }
}

Разбор вопроса

Ментор
Ответь как на реальном собеседовании. Я задам уточняющие вопросы, а затем сравню твой ответ с эталонным и покажу точность в %.
Войди, чтобы начать диалог Ментор ведёт диалог по текущему вопросу и учитывает предыдущие сообщения.
Войти