hashset java tutorial with programming examples
Овај водич објашњава шта је ХасхСет у Јави, ХасхСет методе, како га имплементирати и итератирати и друге сродне концепте уз помоћ примера програмирања:
ХасхСет је колекција која чува предмете. ХасхСет у Јави се имплементира помоћу класе ‘ХасхСет’ пакета јава.утил.
Ова класа имплементира постављени интерфејс. Користи ХасхТабле која је инстанца ХасхМап за складиштење.
=> Овде погледајте водич за почетнике Јава.
Шта ћете научити:
Јава ХасхСет
Неке карактеристике ХасхСет-а су дате у наставку:
- Имплементира Сет интерфејс који има ХасхТабле као унутрашњу структуру. ХасхТабле је, пак, инстанца ХасхМап-а.
- Не чува редослед елемената. Елементи се чувају случајним редоследом.
- ХасхСет не дозвољава двоструке вредности.
- Имплементира интерфејс који се може клонирати и серирати, осим интерфејса Сет.
- У ХасхСету можемо имати нулл вредности.
Хијерархија класе ХасхСет
Хијерархија класе ХасхСет дата је у наставку:
Као што је приказано на горњој слици, класа ХасхСет проширује класу АбстрацтСет која заузврат имплементира интерфејс Сет. Постављени интерфејс наслеђује интерфејс Цоллецтион који заузврат проширује интерфејс Итерабле.
Издање Јава 8 представило је нову методу ‘Сплитератор’ у ХасхСет-у који ствара брзи сплитератор који врши касно везивање над елементима ХасхСет-а.
Општа декларација класе ХасхСет је:
јавна класа ХасхСет проширује АбстрацтСет имплементира Сет,
Цлонеабле, Сериализабле
Увези ХасхСет
Функционалност ХасхСет можемо да укључимо у програм помоћу изјаве о увозу као што је приказано доле:
импорт јава.утил.ХасхСет;
или
импорт јава.утил. *;
Прогласите ХасхСет у Јави
Можемо створити ХасхСет објекат у Јави како је дато у наставку:
ХасхСет х = нови ХасхСет ();
Класа ХасхСет пружа следеће конструкторе за креирање објеката.
Прототип конструктора | Опис | |
---|---|---|
уклонити | Логичко уклањање (објекат о) | Уклања задати елемент о из ХасхСет-а ако је део ХасхСет-а. |
ХасхСет () | Подразумевани конструктор за ХасхСет | |
ХасхСет (инт капацитет) | Конструише ХасхСет објекат са задатим „капацитетом“. | |
ХасхСет (инт капацитет, флоат лоадФацтор) | Конструише ХасхСет објекат са датим „капацитетом“ и „лоадФацтор“. | |
ХасхСет (Колекција ц) | Конструисати ХасхСет објекат из дате колекције. |
Као што је приказано у горњој табели, осим подразумеваног конструктора, ова класа такође нуди конструкторе који узимају капацитет и лоадфацтор и другу колекцију као своје аргументе. Објекте ове класе можемо створити помоћу било ког од ових конструктора.
Иницијализујте ХасхСет
Следећи Јава код приказује декларацију и иницијализацију објекта класе ХасхСет. У овом програму креирамо објект класе ХасхСет од АрраиЛист-а. У почетку креирамо и иницијализујемо АрраиЛист, а затим користимо овај АрраиЛист за креирање и иницијализацију ХасхСет објекта.
import java.util.*; class Main{ public static void main(String args()){ //declare and initialize ArrayList ArrayList<String> myList=new ArrayList<String>(); myList.add('Red'); myList.add('Green'); myList.add('Blue'); //Create a HashSet and provide ArrayList in its constructor HashSet<String> mySet=new HashSet(myList); mySet.add('Yellow'); //print the HashSet System.out.println('The HashSet contents:'); Iterator<String> i=mySet.iterator(); while(i.hasNext()) { System.out.print(i.next() + ' '); } } }
Излаз:
Како ХасхСет интерно ради на Јави?
Интерно се имплементира помоћу ХасхТабле-а. ХасхТабле је инстанца ХасхМап-а. Али ХасхМап је колекција парова кључ / вредност. Па, како да складиштимо ХасхСет у ХасхМап-у?
Вредности објекта ХасхСет су кључеви ХасхМап-а.
Пример Јава ХасхСет-а
Погледајмо детаљан пример ХасхСет-а на Јави.
import java.util.*; class Main{ public static void main(String args()){ //Create a HashSet and add elements to it HashSet<String> mySet=new HashSet<String>(); mySet.add('Blue'); mySet.add('Green'); mySet.add('Blue'); mySet.add('Green'); mySet.add('Red'); mySet.add('Brown'); mySet.add('Yellow'); //Iterate through the HashSet and print its elements System.out.println('HashSet contents:'); Iterator<String> itr=mySet.iterator(); while(itr.hasNext()){ System.out.print(itr.next() + ' '); } } }
Излаз:
Овде користимо подразумевани конструктор за стварање објекта ХасхСет. Затим помоћу методе адд додајемо елементе (боје) у ХасхСет. Даље, помоћу итератора прелазимо кроз ХасхСет и исписујемо садржај.
ХасхСет Итератор
У Јави, ХасхСет се може прећи или поновити на два начина, као што је објашњено у наставку.
Без употребе Итератора
Овде не дефинишемо итератор на ХасхСет-у. Уместо тога, користимо форЕацх петљу. Следећи програм приказује обилазак ХасхСет-а помоћу форЕацх петље.
import java.util.HashSet; import java.util.Set; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use foreach loop to iterate through the HashSet System.out.println('HashSet contents:'); for (String city : cities_HashSet) { System.out.print(city + ' '); } } }
Излаз:
Коришћење Итератора
Следећи приступ понављању је коришћење итератора. Овде дефинишемо итератор за класу ХасхСет, а затим га прелазимо.
Следећи програм показује овај приступ.
import java.util.HashSet; import java.util.Set; import java.util.Iterator; class Main{ public static void main(String() args) { // Create a HashSet Set<String> cities_HashSet = new HashSet<String>(); //Initialize HashSet with elements cities_HashSet.add('Mumbai'); cities_HashSet.add('Delhi'); cities_HashSet.add('Pune'); cities_HashSet.add('Chennai'); cities_HashSet.add('Bangaluru'); //use iterator to iterate through the HashSet System.out.println('HashSet contents using Iterator:'); Iterator<String> iter = cities_HashSet.iterator(); while(iter.hasNext()){ System.out.print(iter.next() + ' '); } } }
Излаз:
ХасхСет методе / АПИ
Следећа табела приказује методе које пружа класа ХасхСет. Дали смо прототип и опис сваке методе. Као што се види, имамо методе за основне операције попут додавања, уклањања, величине итд., Као и за друге методе за проверу садржаја, празнине, итератора, сплитератора итд.
Метод | Прототип методе | Опис |
---|---|---|
додати | Логички додатак (Е е) | Додаје дати елемент е у ХасхСет ако већ није присутан. |
јасно | Обриши празнину () | Брише или уклања све елементе из ХасхСет-а |
клон | Клон објекта () | Користи се за враћање плитке копије ове инстанце ХасхСет-а: сами елементи нису клонирани. |
садржи | Боолеан садржи (објекат о) | Проверава да ли ХасхСет садржи дати објекат о и враћа труе ако да. |
Празно | Боолеан исЕмпти () | Проверава да ли је ХасхСет празан. Враћа тачно ако је одговор да. |
итератор | Итератор итератор () | Враћа итератор који се користи за прелазак ХасхСет-а. |
величина | Инт величина () | Враћа величину или број елемената присутних у ХасхСет-у. |
цепач | Сплитератор сплитератор () | Враћа сплитератор за брзо и неуспешно повезивање за пролазак кроз ХасхСет. Овај метод је уведен у Јави 8. |
Описали смо методе које нуди класа ХасхСет, сада ћемо применити пример који демонстрира главне методе класе.
Јава програм у наставку приказује методе ове класе.
import java.util.*; class Main{ public static void main(String args()){ //create a HashSet and initialize it HashSet<String> colors_set=new HashSet<String>(); colors_set.add('Red'); colors_set.add('Green'); colors_set.add('Blue'); colors_set.add('Cyan'); System.out.println('Initial HashSet: '+colors_set); //remove() method => remove specified element colors_set.remove('Red'); System.out.println('
HashSet after remove(Red): '+colors_set); //declare and initialize another list HashSet<String> colors_hash=new HashSet<String>(); colors_hash.add('Yellow'); colors_hash.add('Magenta'); //addAll() method => add another HashSet to existing colors_set.addAll(colors_hash); System.out.println('
HashSet after add(colors_hash): '+colors_set); //removeAll() method => remove all elements specified in the argument colors_set.removeAll(colors_hash); System.out.println('
HashSet after removeAll(colors_hash) method: '+colors_set); //removeIf() => remove if given condition is fulfilled colors_set.removeIf(str->str.contains('Green')); System.out.println('
HashSet after removeIf(contains(Green)) method: '+colors_set); //clear() => delete all elements from the HashSet colors_set.clear(); System.out.println('
HashSet after clear() method: '+colors_set); } }
Излаз:
Претвори ХасхСет у низ
Можемо користити методу тоАрраи () ХасхСет-а за претварање датог ХасхСет-а у низ. Имајте на уму да тип података и величина низа треба да се подударају са подацима ХасхСет-а.
Следећи Јава програм приказује ову конверзију.
import java.util.HashSet; class Main{ public static void main(String() args) { // Create a HashSet & inintialize it HashSet<String> num_HashSet = new HashSet<String>(); num_HashSet.add('One'); num_HashSet.add('Two'); num_HashSet.add('Three'); num_HashSet.add('Four'); // Print HashSet contents System.out.println('HashSet contents: '+ num_HashSet); // Declare an array with size = HashSet size String() numArray = new String(num_HashSet.size()); //use toArray method to convert HashSet to an array num_HashSet.toArray(numArray); // Print Array System.out.println('Array from HashSet: '); for(String val : numArray){ System.out.print(val + ' '); } } }
Излаз:
Сорт А ХасхСет
Можемо сортирати ХасхСет у Јави. Елементи ХасхСет-а се првобитно не сортирају јер не одржава редослед елемената. Можемо следити два приступа за сортирање ХасхСет-а на Јави.
Коришћење методе Цоллецтионс.сорт ()
У овом приступу претварамо ХасхСет у листу. Затим за сортирање листе користимо методу Цоллецтионс.сорт (). Затим се штампа овај списак.
import java.util.*; public class Main { public static void main(String args()) { // Create a HashSet & initialize it HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet: ' + cities_HashSet); // Convert HashSet to ArrayList List<String> cities_list = new ArrayList<String>(cities_HashSet); // Use Collections.sort () method to sort the list Collections.sort(cities_list); // Print the Sorted ArrayList (HashSet) System.out.println('Sorted HashSet:'+ cities_list); } }
Излаз:
имплементација реда приоритета у јави
Претварањем ХасхСет-а у ТрееСет
Користећи овај приступ претварамо ХасхСет у ТрееСет. ТрееСет одржава редослед елемената. Стога, када је ХасхСет прекривен ТрееСет-ом, елементи се доводе у ред.
Следећи Јава програм приказује ову конверзију сортирањем ХасхСет-а.
import java.util.*; public class Main { public static void main(String args()) { // Create and initialize a HashSet HashSet<String> cities_HashSet = new HashSet<String>(); cities_HashSet.add('Pune'); cities_HashSet.add('Mumbai'); cities_HashSet.add('Bangaluru'); cities_HashSet.add('Hyderabad'); System.out.println('Original HashSet:'+ cities_HashSet); // Sort HashSet using TreeSet TreeSet<String> treeSet = new TreeSet<String>(cities_HashSet); // Print the sorted HashSet System.out.println('HashSet sorted using using TreeSet:' + treeSet); } }
Излаз:
Хајде сада да разговарамо о неким разликама између ХасхСет-а и ХасхМап-а. Такође ћемо разговарати о разликама између ХасхСет-а и ТрееСет-а.
ХасхСет вс ХасхМап
Следећа табела приказује главне разлике између ХасхСет-а и ХасхМап-а.
ХасхСет | ХасхМап |
---|---|
Објекти се додају методом Адд (). | ХасхМап користи методу пут () за додавање парова кључ / вредност. |
Имплементира Сет интерфејс. | Имплементира интерфејс Мап. |
Чува предмете одређеног типа. | Чувајте парове кључ / вредност података. |
Не дозвољава дуплиране вредности објеката. | Омогућава дуплиране вредности, али не и дупле кључеве. |
Може имати једну нулл вредност. | Омогућава један нулл кључ и више нулл вредности. |
Интерно користи ХасхМап Објецт за складиштење података. | Користи технику хеширања за чување података. |
Је спорији у поређењу са ХасхМап-ом. | ХасхМап је бржи. |
ХасхСет вс ТрееСет
У наставку су наведене разлике између ХасхСет-а и ТрееСет-а.
ХасхСет | ТрееСет |
---|---|
Има ограничену функционалност. | Омогућава функције које нуде разне операције и олакшава употребу Треесет-а него ХасхСет-а. |
Не одржава редослед елемената. Похрањује предмете случајним редоследом. | Одржава природни поредак елемената. |
Омогућава нулл вредности. | Не може имати нулл вредности. |
Даје боље перформансе јер је за основне операције потребно константно време. | Нуди лог н временске трошкове за основне операције. |
Много брже од Треесета. | Треесет је спорији. |
Интерно имплементирано помоћу ХасхМап-а. | Треесет се интерно имплементира користећи навигацијску Треемап. |
За поређење користи метод екуалс (). | За поређење користи методу цомпареТо (). |
Често постављана питања
П # 1) Како ХасхСет ради на Јави?
Одговор: ХасхСет у Јави користи ХасхМап за складиштење објекта. Један ХасхМап објекат се креира када се креира ХасхСет објекат. Елементи или објекти унети у ХасхСет се чувају као кључеви у ХасхМап-у.
П # 2) Да ли је ХасхСет наручен на Јави?
Одговор: Не, није наручено на Јави. Похрањује елементе случајним редоследом.
П # 3) Да ли ХасхСет дозвољава нулу?
Одговор: да, дозвољава једну нулл вредност. То значи да само један елемент или објекат може бити нулл, а не сви.
П # 4) Зашто се ХасхСет користи у Јави?
Одговор: Користи се за чување парова кључ / вредност у Јави. Слично је ХасхТабле-у, с тим што је ХасхСет несинхронизован и за разлику од ХасхТабле-а омогућава нулл вредности и један нулл кључ. ХасхСет није наручен и може се користити за складиштење неуређених објеката или када редослед објеката није потребан.
П # 5) Да ли је ХасхСет синхронизован у Јави?
Одговор: ХасхСет није синхронизован на Јави. Такође, није заштићен нити. Али можемо да га учинимо синхронизованим помоћу методе синцхронизедСет ().
Закључак
ХасхСет је колекција која садржи објекте који су насумичним редоследом. Класа ХасхСет која имплементира ХасхСет у Јави интерно користи ХасхТабле који имплементира ХасхМап.
Видели смо декларацију и иницијализацију ХасхСет-а заједно са методама које пружа класа ХасхСет.
=> Прочитајте серију Еаси Јава Траининг.
Препоручено читање
- Јава двострука лекција са примерима програмирања
- Водич за Јава Флоат са примерима програмирања
- Јава Реверсе Стринг: Водич са примерима програмирања
- ТрееСет у Јави: Водич са примерима програмирања
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Јава Стринг садржи () Водич за методе са примерима
- ТрееМап у Јави - Водич за примере Јава ТрееМап
- Назубљени низ у Јави - Водич са примерима