JavaRush /Курсхо /All lectures for TG purposes /Коллекция HashSet

Коллекция HashSet

All lectures for TG purposes
Сатҳи , Дарс
дастрас

1. Контейнерҳо ва коллексияҳо

Контейнерҳо ё коллексияҳоро классҳое номанд, ки барои нигоҳ доштан ва коркард кардани бисёр объектҳо якбора имконият медиҳанд. Шумо аллакай ду навъи контейнерҳоро медонед — массивҳо ва рӯйхатҳо.

Дар Java чандин коллексияҳо ҳастанд, ки ҳар кадоме унсурҳоро ба хусусияти худ нигоҳ медорад. Инҳо баъзе аз онҳо ҳастанд:

Тип коллекции Класс Тавзеҳот
List
ArrayList
Рӯйхат
LinkedList
Рӯйхати пайваст
Vector
Вектор
Stack
Стаки элементҳо
Set
HashSet
Мунтазам
TreeSet
LinkedHashSet
Queue
PriorityQueue
Навбат
ArrayDeque
Map
HashMap
Тасвир/Калима
TreeMap
HashTable

Дар ин ҷо норавшанӣ бо номҳо вуҷуд дорад. Гарчанде ки дар аксари забонҳои барномасозӣ ҳамаи ин сохтори маълумот ба номи коллексияҳо маълум мешаванд, дар Java ин тавр нест. Дар забони Java баъзе аз ин классҳо интерфейси Collection-ро амалӣ мекунанд, дар ҳоле ки дигарҳо не.

Аз ин рӯ, коллексияҳо ба коллексияҳо дар маънои васеъ ва коллексияҳо дар маънои танг (танҳо онҳое, ки интерфейси Collection-ро амалӣ мекунанд) тақсим шуда истодаанд.

Пас, то ки нофатам, коллексияҳо танҳо коллексияҳо дар маънои танг номида мешаванд (классҳо бояд интерфейси Collection-ро амалӣ кунанд). Инҳо ҳама коллексияҳои типи List, Set ва Queue мебошанд. Коллексияҳо дар маънои васеъ маълуманд ҳамчун контейнерҳо. Ба онҳо классҳои типи Map ва массивҳо дохил мешаванд.


2. Коллекция HashSet

Класс HashSet намунаи маъмулӣ аз коллексияҳои типи "мунтазам" мебошад. Он ба класс ArrayList монанди худ дорад, ва дар маънои муайян версияи примитиви он аст.

Объекти типи HashSet-ро бо ёрии фармонҳои наздики навъи:

HashSet<Тип> ном = new HashSet<Тип>();

Ки намуд - ин намуде, ки унсурҳоро дар коллексияи HashSet нигоҳ медорад.

Класси HashSet чунин методҳо дорад:

Метод Тавзеҳот
boolean add(Тип value)
Унсури value-ро ба коллексия зам мекунад
boolean remove(Тип value)
Унсури value-ро аз коллексия хориҷ мекунад.
Вақте ки чунин унсур вуҷуд дошт, true-ро бармегардонад
boolean contains(Тип value)
Чек мекунад, ки оё ин унсур дар коллексия ҳаст ё не value
void clear()
Коллексияро тоза мекунад: ҳамаи унсурҳоро хориҷ мекунад
int size()
Миқдори унсурҳоро дар коллексия бармегардонад

Мисоли истифодаи мунтазам.

Биёед барномае нависем, ки бо корбар худоҳофизӣ мекунад, агар ӯ бо барнома салом гуфта бошад: агар корбар салом гуфта бошад. Барои бештар шавқоварӣ "салом"-ро ба якчанд забон гуфта метавон.

Код Шарҳ
HashSet<String> set = new HashSet<String>();

set.add("Салом");
set.add("Hello");
set.add("Hola");
set.add("Bonjour");
set.add("Ciao");
set.add("Namaste");

Scanner console = new Scanner(System.in);
String str = console.nextLine();

if (set.contains(str))
   System.out.println("Худоҳофиз!");
Эҷоди объекте аз навъи HashSet, ки унсурҳои навъи String-ро нигоҳ медорад.


Дар set саломҳо ба забонҳои гуногун дохил мекунем.




Суханро аз консол дохил мекунем,


агар ин сухан дар маҷмӯи саломҳо буд, пас худоҳофизӣ мекунем.


3. Мунтазам

Коллекция Set барои нигоҳдошти мунтазам офарида шудааст. Барои ҳамин онро Set (мунтазам) меноманд. Ин коллексия се хусусият дорад.

Операции над мунтазам

Бар мунтазам танҳо се операция кардан мумкин аст: унсурҳоро ба мунтазам зам кардан, унсурҳоро аз мунтазам хориҷ кардан ва фаҳмидан, ки оё унсур муайян дар мунтазам аст ё не. Ҳамааш.

Набуди тартиб

Унсурҳои ин коллексия нобаробар мебошанд. Ба унсур бо рақамаш дастрасӣ кардан ё арзишро дар коллексия ба рақами муайян бор кардан мумкин нест. Методҳои get() ва set() дар мунтазам нест.

Уникалият унсурҳо

Ҳама унсурҳои мунтазам уникал мебошанд. Ба фарқ аз рӯйхат, дар мунтазам як унсур танҳо як маротиба метавонад бошад. Нависандаи ё дар мунтазам ҳаст ё нест: дигарин вуҷуд надорад. Наход дар "мунтазами рангҳо" се маротиба "ранги сиёҳ"-ро зам кардан. Он ё дар он ҷо ҳаст ё нест.

Ҷустуҷӯи унсурҳо

Вақте ки шумо унсури навро зам мекунед, унсурро хориҷ мекунед, ё ҳаққи унсурро тафтиш мекунед, дар дохили метод ҷустуҷӯ анҷом дода мешавад. Унсурҳои коллексия ва унсури дохилшуда аввал аз рӯи hashCode() муқоиса мешаванд, ва агар hashCode() мувофиқ бошад, бо equals.



4. Муқоисаи коллексияҳо: List vs Set

Биёед коллексияҳои ду навъро муқоиса кунем: List ва Set. Чӣ мебошанд фарқиятҳои асосии онҳо ва кай истифодаи яке бештар муфид аст, вақте ки дигаре – дуюмиро.

Биёед кӯшиш кунем муқоиса кардани Рӯйхат ва Мунтазам аз мисоли бозичаҳои кӯдакона.

Коллекция List (Рӯйхат) ба маҷмӯи бозичаҳо дар утоқи кӯдакона монанд аст, ки дар назди девор истодаанд. Шумо метавонед бозичаро ба охири рӯйхат зам кунед. Шумо метавонед ҳам дар мобайн ҷойгир кунед, агар ҳатмӣ бошад (вале якчанд бозича бояд кӯчонида шавад).

Ҳар як бозича рақами тартибӣ дорад. Шумо метавонед бозичаро бо рақами он гиред ё бозичаи рақами 7-ро бо бозичаи рақами 13 иваз кунед. Шумо метавонед аз рӯйхат бозичаи рақами 4-ро хориҷ кунед. Ва ниҳоят, миқдори ҳамаи бозичаҳо дар рӯйхатро фаҳмидан мумкин аст.

Коллекция Set (Мунтазам) бештар ба бозичаҳое монанд аст, ки ба як қуттиа андохта шудаанд. Ба қуттиа шумо метавонед бозичаро зам кунед, шумо метавонед бозичаро аз қуттиа хориҷ кунед. Аммо бозичаҳои чунин қуттиа рақами муқаррарӣ надоранд.

Ё фаҳмем, ки шумо ба кӯдак бозича интихоб мекунед дар рӯзи таваллуд. Он гоҳ шумо аввал фикри нияти он доред, ки оё чунин бозича аллакай дар ӯ дошта бошад ё не. Пас ҳамаи бозичаҳо, ки аллакай дар он ҷо ҳастанд, маҷмӯи бозичаҳоеро мемонад, ки шумо харида намешавед.

Аз ин нуқтаи назар, тартиби бозичаҳо дар маҷмӯи "ҳаст" нақш намебозад, чуноне ки ҳузури ду бозичаи якхелаи якхелаи якхела ин ҳам ба маъно аст. Шумо на худи бозичаҳо ва на миқдори онҳо, балки бозичаҳо ҳамчун маҷмӯи объектҳои уникалӣ ба шумо маънӣ медиҳанд.

Барои чунин ҳолатҳо шумо ба маҷмӯи Set ва намояндаи маъмулии он — класс HashSet лозим мешавед.

Шарҳҳо
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION