Гэты клас рэалізуе інтэрфейс Set, падтрыманы хэш-табліцай (фактычна асобнік HashMap). Яна не дае ніякіх гарантый адносна парадку ітэрацыі мноства; у прыватнасці, гэта не гарантуе, што парадак будзе заставацца нязменным на працягу доўгага часу. Гэты клас дазваляе нулявы элемент. Гэты клас не сінхранізуецца. Аднак ён можа быць сінхранізаваны відавочным чынам: Set s = Collections.synchronizedSet(new HashSet(...));
Акуляры Заўвага аб HashSet:
- HashSet не вытрымлівае ніякага парадку, элементы будуць вернутыя ў любым выпадковым парадку.
- HashSet не дапушчае дублікатаў. Пры спробе дадаць дублікат элемента ў HashSet, старое значэнне будзе перазапісаны.
- HashSet дазваляе нулявыя значэнні, аднак калі ўставіць больш аднаго анулюе ён усё роўна вяртаюць толькі адзін нулявое значэнне.
- HashSet не з'яўляецца сінхранізаваны.
- Итератор , які вяртаецца гэтым класам отказобезо- пост , які азначае , што итератор будзе кідаць
ConcurrentModificationException
калі HashSet было зменена пасля стварэння итератора, любымі сродкамі , акрамя ўласнага метаду выдаліць итератора.
HashSet Прыклад
імпарт java.util.HashSet; грамадскі клас HashSetExample {дзяржаўны статычны сіла асноўны (String Арг []) { // аб'яву HashSet HashSet <String> = H Усталюйце новы HashSet <String> (); // Даданне элементаў у HashSet hset.add ( "Яблык"); hset.add ( "манга"); hset.add ( "вінаград"); hset.add ( "Orange"); hset.add ( "рыс"); // Даданне паўтаральных элементаў hset.add ( "Яблык"); hset.add ( "манга"); // Даданне нулявых значэнняў hset.add (нуль); hset.add (нуль); // Адлюстраванне HashSet элементаў System.out.println (H Усталюйце); } }
выхад:
[Пусты, манга, вінаград, яблык, апельсін, рыс]
Як вы можаце бачыць, што ўсе паўтараюцца значэння не прысутнічаюць на выхадзе, уключаючы дубліката нулявое значэнне.
HashSet падручнікі
- Выдаліць усе элементы з HashSet
- Як ітэрацыю праз HashSet
- Пераўтварэнне HashSet ў масіў
- Пераўтварэнне HashSet ў TreeSet
- Пераўтварэнне HashSet ў Спіс / ArrayList
- HashSet супраць HashMap
- HashSet супраць TreeSet
HashSet метады:
- лагічнае дадатак (элемент е): Гэта дадае элемент е ў спісе.
- несапраўднымі ясна (): Выдаляе ўсе элементы з спісу.
- Клон Object (): Гэты метад вяртае няпоўны копію HashSet.
- Булевы змяшчае (Object о): Ён правярае, ці прысутнічае ў спісе ці не зададзены аб'ект а. Калі аб'ект быў знойдзены ён вяртае ісціну яшчэ хлусня.
- Булевы IsEmpty (): Вяртае ісціну , калі няма элемента прысутнічае ў наборы.
- памер Int (): Гэта дае лік элементаў набору.
- Булевы (Object о): Выдаляе зададзены аб'ект вываду з набору.
У чым розніца паміж HashSet і ArrayList.
Спіс масіў упарадкаваны збор і дазволіў дублікаты, дзе HashSet ня
У масіве Спіс ня варта па змаўчанні механізму сартавання, але ў выпадку Hash Усталяваць яго можна і ўстаўка не захоўваюцца ў наборы Hash
Такім чынам, калекцыя дае Facility для сартавання па змаўчанні з дапамогай «Калекцыі» ўтыліты класа
хуткі і просты падручнік для ява hashsets. дзякуй!
Я думаю, што гэтая кропка не з'яўляецца правільным:
2.-HashSet не дапушчае дублікатаў. Пры спробе дадаць дублікат элемента ў HashSet, старое значэнне будзе перазапісаны.
У Java Docs згадаць: Калі гэты набор ужо ўтрымлівае элемент, выклік пакідае набор без змен і вяртае хлусня.
Hash набор можа змяшчае нулявое значэнне, у той час як спіс масіва не можа
добры дзень
дзякуй за ваш сайт
У мяне ёсць пытанне
як можа
Напісанне праграмы з HashSet, якія паказваюць мне
Паўтараюцца словы ???
Гэты падручнік з'яўляецца цудоўным, мне гэта падабаецца.
і гэта думаць па - «калі HashSet было зменена пасля стварэння итератора»
Вы маеце на ўвазе гэта:
HashSet HS = новы HashSet ();
Song s1 = новая песня ( «ZZZ», «Zaheer», «23», «343»);
Song s2 = новая песня ( «хх», «Мосіна», «23», «343»);
hs.add (S1);
hs.add (с2);
Итератор ITR = hs.iterator ();
Song s6 = новая песня ( «ооо», «yakoob», «23», «343»);
hs.add (s6);
у той час як (itr.hasNext ()) {
System.out.println (itr.next ());
}
================== Спіс Hash ===================
[Нуль, Apple, вінаград, інжыр, манга, апельсін]
прывітанне, я паспрабаваў ваш код, але ён атрымлівае вынік у адсартаваным выглядзе.
можа раўнапраўныя аб'екты будуць дададзеныя ў HashSet? калі так, то чаму гэта не разглядаецца як дублікат?
дзякуй за падручнік
але той факт, што "Калі вы спрабуеце дадаць дублікат элемента ў HashSet, старое значэнне будзе перазапісаны.» гэта не так.
паводле таго , што ён гаворыць на сайце аракула ў гэтай спасылцы ( https://docs.oracle.com/javase/7/docs/api/java/util/HashSet.html ), гэта наадварот (гэта значыць , калі element_to_be_added з'яўляецца дубляваць, не будуць дададзеныя усе):
грамадскае лагічнае дадатак (Е е)
Дадае ўказаны элемент да гэтага набору, калі ён ужо не прысутнічае. Больш фармальна, дадае ўказаны элемент е да гэтага набору, калі гэты набор не ўтрымлівае элементаў Е2, што (е == нуль e2 == NULL: e.equals (Е2)). Калі гэты набор ужо ўтрымлівае элемент, выклік пакідае набор без змен і вяртае хлусня.