- Store an element with the Добавить Метод (через Bucket )
- Проверьте существование элемента с помощью метода содержимого (опять же через bucket )
Код: Выделить всё
Set products = new LinkedHashSet();
products.add(new Product("cod-001", "Guitar Samick", 100.00));
products.add(new Product("cod-002", "Guitar Bass Ibanez", 200.00));
products.add(new Product("cod-003", "Guitar Fender", 300.00));
products.add(new Product("cod-004", "Guitar Bass Fender", 400.00));
< /code>
о отчетности < /p>
for(Product product: products) {
System.out.println(product.toString() + " - " + product.hashCode());
}
Код: Выделить всё
assertTrue(products.contains(new Product("cod-001", "Guitar Samick", 100.00))); //passes
assertTrue(products.contains(new Product("cod-002", "Guitar Bass Ibanez", 200.00))) //passes
assertTrue(products.contains(new Product("cod-003", "Guitar Fender", 300.00)));//passes
assertTrue(products.contains(new Product("cod-004", "Guitar Bass Fender", 400.00)));//passes
- hashcode , хранящийся в ковше. Вызовите) < /li>
< /ul>
Теперь сейчас из следующего вопроса < /p>
/> Вполне вероятно, что ваш объект изменен, а реализация Hashcode () зависит от изменяющих полей. Итак, сначала вы поместили объект в набор, , затем изменил его, изменив свой хэшкод. Однако внутри хешса объект все еще сохраняется в старом ведре, которое число получено из исходного хешкода, поэтому его нельзя найти. как правило: никогда inemify объекты в хэште или объектах, используемых в качестве хашмапов . />Поэтому следующий набор Asserttrue Методы не сбои (наблюдайте за каждым новым продуктом созданным объектом, который также имеет номер с +100)Код: Выделить всё
for(Product product: products) { //each element is edited +100 to the number product.setNumber(product.getNumber() + 100.00); }, потому что для метода содержит метод «два хэшкода» - это не больше, чемКод: Выделить всё
assertTrue(products.contains(new Product("cod-001", "Guitar Samick", 200.00))); //fails assertTrue(products.contains(new Product("cod-002", "Guitar Bass Ibanez", 300.00))) //fails assertTrue(products.contains(new Product("cod-003", "Guitar Fender", 400.00)));//fails assertTrue(products.contains(new Product("cod-004", "Guitar Bass Fender", 500.00)));//fails
Hashcode , хранящийся в ковше. hashcode элемента основан на состоянии new (известное с помощью продукта.hashcode () call)
for(Product product: products) {
System.out.println(product.toString() + " - " + product.hashCode());
}
Он сообщает о new hashcode каждого элемента, но у каждого bucket есть old hashcode все еще
Примечание Я знаю правильный подход к тому, чтобы добавить элемент. /> Теперь для Academic и исследования целей, если возможно
Вопрос
[*] Как получить из каждого ведра, хэшкода, хранящей Список/массивы хэшкодов
один из всех ведер (запрос в этом вопросе)
Другое из всех элементов (уже возможно с продуктом.>
Подробнее здесь: https://stackoverflow.com/questions/797 ... ode-stored