#267 Изменение ключа HashMap после добавления

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

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

public class Main {

    public static void main(String[] args) {
        var usersMap = new HashMap<User, String>();

        var user1 = new User(UUID.randomUUID(), "Bruce");
        var user2 = new User(UUID.randomUUID(), "Lois");
        var user3 = new User(UUID.randomUUID(), "Ivan");
        var user4 = new User(UUID.randomUUID(), "Anna");

        var token1 = "token1";
        var token2 = "token2";
        var token3 = "token3";
        var token4 = "token4";

        usersMap.put(user1, token1);
        usersMap.put(user2, token2);
        usersMap.put(user3, token3);
        usersMap.put(user4, token4);

        user1.setName("Vasya");

        var vasyaToken = usersMap.get(user1);

        System.out.println(vasyaToken);
    }

    @AllArgsConstructor
    @Getter
    @Setter
    public static class User {
        private UUID uuid;
        private String name;

        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + ((uuid == null) ? 0 : uuid.hashCode());
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            return result;
        }

        @Override
        public boolean equals(Object obj) {
            if (this == obj) {
                return true;
            }

            if (!(obj instanceof User)) {
                return false;
            }

            User other = (User) obj;

            if (uuid == null) {
                if (other.uuid != null) {
                    return false;
                }
            } else if (!uuid.equals(other.uuid)) {
                return false;
            }

            if (name == null) {
                if (other.name != null) {
                    return false;
                }
            } else if (!name.equals(other.name)) {
                return false;
            }

            return true;
        }
    }
}

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

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