1. Проблема
1. Как Hashset, TreesSet используют HashCode () и равные () методы
2. Когда и почему объекты в TreeMap и Treesset реализуют сопоставимый интерфейс?
2. Ответ:
1. Hashset реализуется через Hashmap, Treesset реализуется через TreeMap, но Set использует только ключ карты.
2. Ключ и набор карты имеют общую функцию, которая является уникальностью набора. TreeMap имеет дополнительный заказ.
3. Hashcode и Reval () используются для HashMap. Поскольку нет необходимости сортировать, вам нужно только обращать внимание на позиционирование и уникальность.
A.HashCode используется для расчета значения хэша, а значение хеш используется для определения индекса хеш -таблицы.
беременный Индекс в хэш -таблице хранит связанный список, поэтому вам необходимо пройти через равный метод, чтобы сравнить каждый объект в цепочке, прежде чем вы сможете по -настоящему найти запись, соответствующую значению ключа.
Когда C.Put, если хэш -таблица не находится, добавьте запись перед связанным списком. Если он находится, замените значение в записи и верните старое значение.
дюймовый При перезаписи хэшкода () и равного () ключа, будьте осторожны, чтобы не ассоциировать их с изменчивыми свойствами. В противном случае, после изменения свойства, хэшкод изменится и равна также будет ложным, так что он не будет найден на карте. Более того, такой объект не может быть выпущен, потому что его нельзя найти, что станет недействительной ссылкой (эквивалентно утечке памяти).
4. Поскольку TreeMap требует сортировки, для сравнения размера значения ключа необходим компаратор. Конечно, он также позиционируется с использованием компаратора.
A.Comparator может быть указан при создании TreeMap, а затем используйте Comporator.comPare при сортировке
беременный Если компаратор не указан во время создания, будет использоваться метод Key.compareto (), который требует, чтобы ключ реализовал сопоставимый интерфейс.
C. Treemap реализован с использованием структуры данных дерева, поэтому позиционирование может быть завершено с помощью интерфейса Compare.
Импорт java.util.hashset; import java.util.iterator; public class wpsklhashset {// Использование набора в java (дубликаты объектов не допускаются): public static void main (string [] args) {hashset hashset = new Hashset (); String a = new String ("a") String b = string ("b"); "new string (" b "); String ("b"); hashset.add (a); hashset.add (b); system.out.println (hashset.size ()); string cz = hashset.add (c)? «Этот объект не существует»: «уже существует»; System.out.println («Проверьте, можно ли добавить объект«+cz); System.out.println (hashset.isempty ()); // Проверьте, находится ли объект в IT System.out.println (hashset.contains («»); iterator ir = hashset.terator (); while (ir.hasnext ()) {system.out.println (ir.next ());} // проверить, может ли объект удалять System.out.println (hashset.remove ("a")); System.out.println (hashset.remove ("a"); // После тестирования, если вы хотите использовать racse. ir = hashset.iterator (); while (ir.hasnext ()) {System.out.println (ir.next ());}}}/*** через эту программу вы также можете проверить расстройство добавленных элементов набора деревьев и порядок вывода*/import java.util.treeset; импорт java.util.itertor wreeesett new Treesset (); kree.Add ("China"); Tree.Add ("America"); Tree.Add ("Japan"); Tree.Add ("китайский"); итератор iter = tree.iterator (); while (iter.hasnext ()) {System.out.println (iter.next ());}}}Кроме того, я включаю некоторые другие различия (благодаря моему другу андегулина, который «Baidu знает»):
1. Treesset реализован деревом с двумя разногласиями. Данные в деревьях автоматически отсортируются, а нулевые значения не допускаются.
2. Hashset реализован хэш -таблицей. Данные в хэшсете неупопорядочен. Вы можете положить NULL, но вы можете положить только один нуль. Значения в обоих не могут быть повторены, как и уникальное ограничение в базе данных.
3. Hashset требует, чтобы помещенный объект должен был реализовать метод HashCode (). Расположенный объект отмечен кодом хэшкода, а объект HashCode с тем же содержимого имеет одинаковый хэшкод, поэтому размещенное содержимое нельзя повторить. Но объекты одного класса могут быть размещены в разных случаях.
Суммировать
Выше приведено все содержание этой статьи о разнице между методами использования хэшса и деревья, и я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!