/** * Тестирование на HashMap * * @throws Exception */ @Test public void testOnHashMap() throws Exception { Map<UserHashcode, Picture> users = new HashMap<>(); users.put(user1, user1.getPicture()); assertTrue(users.containsKey(user1)); // user3 копия user1 но не содержится в ключах Map. Поиск идет по equals, а он не переопределен assertFalse(users.containsKey(user3)); // В Map есть только user1, но присутствует value для user3, // т.к. у класса Picture переопределены оба метода, хотя объекты pic1 и pic3 разные по ссылкам assertTrue(users.containsValue(pic3)); // Объекты разные, а хэш-коды - одинаковые assertFalse(pic1 == pic3); assertEquals(pic1.hashCode(), pic3.hashCode()); users.put(user2, user2.getPicture()); users.put(user3, user3.getPicture()); // user3 не перезатирает user1, т.к. ключи не равны по equals, а только по hashCode assertEquals(3, users.size()); }