Үндсэн ялгаа – TreeSet ба HashSet
Ихэнх програмчлалын хэл нь массивыг дэмждэг. Энэ нь нэг төрлийн өгөгдлийн олон элементийг хадгалахад ашигладаг өгөгдлийн бүтэц юм. Хэрэв зургаан элементэд зориулж зарласан массив байгаа бол арван элементийг хадгалахад ашиглах боломжгүй. Тиймээс массив нь динамик биш бөгөөд массивыг зарласны дараа түүний хэмжээг өөрчлөх боломжгүй. Java зэрэг програмчлалын хэлүүд нь өгөгдлийг динамикаар хадгалахад ашигладаг цуглуулгуудыг дэмждэг. Цуглуулга нь элемент нэмэх, устгах зэрэг үйлдлүүдийг дэмждэг. Цуглуулгын шатлалд хэд хэдэн интерфейс болон ангиуд байдаг. Үндсэн интерфейс нь Цуглуулгын интерфейс юм. Set нь Цуглуулгын интерфейсийг өргөтгөх интерфейс юм. Энэ нь давхардлыг зөвшөөрөхгүй. TreeSet болон HashSet нь Цуглуулгын шатлалын хоёр анги бөгөөд хоёулаа Set интерфейсийг хэрэгжүүлдэг. TreeSet нь Set интерфейсийг хэрэгжүүлдэг анги бөгөөд өвөрмөц элементүүдийг өсөх дарааллаар хадгалахад ашигладаг. HashSet нь Set интерфейсийг хэрэгжүүлдэг анги бөгөөд Hashing механизмыг ашиглан өвөрмөц элементүүдийг хадгалахад ашигладаг. TreeSet болон HashSet хоёрын гол ялгаа нь TreeSet нь элементүүдийг өсөх дарааллаар хадгалдаг бол HashSet нь элементүүдийг өсөх дарааллаар хадгалдаггүй явдал юм. TreeSet болон HashSet хоёулаа зөвхөн өвөрмөц элементүүдийг хадгалдаг.
TreeSet гэж юу вэ?
TreeSet анги нь NavigableSet интерфейсийг хэрэгжүүлдэг. NavigableSet интерфейс нь SortedSet, Set, Collection болон Iterable интерфэйсүүдийг шаталсан дарааллаар өргөтгөдөг. TreeSet нь үргэлж өсөх дарааллыг хадгалдаг. Хэрэв элементүүдийг B, A, C дарааллаар оруулсан бол тэдгээрийг A, B, C хэлбэрээр хадгална. Add (), remove () гэх мэт аргуудыг TreeSet объекттой ашиглаж болно. Нэмэх аргыг элемент нэмэхэд ашиглаж болно. Устгах аргыг цуглуулгаас элементийг устгахад ашигладаг. Эдгээр нь TreeSet-д ашиглагдах зарим аргууд юм.
Зураг 01: TreeSet-тэй програм
Дээрх программын дагуу TreeSet төрлийн объект үүссэн. Мөрийн өгөгдлийн элементүүдийг нэмэх аргыг ашиглан тухайн объектод нэмнэ. Оруулсан өгөгдлийн дараалал нь A, D, A, B, C, D. Давтагчийг ашиглан хадгалсан утгуудыг дэлгэцэн дээр хэвлэнэ. Гаралт нь A, B, C, D. Хэдийгээр хоёр А үсэг, хоёр D үсэг байгаа ч гаралт нь тус бүр нэг A, нэг D үсэг харуулдаг. Тиймээс TreeSet нь өвөрмөц элементүүдийг хадгалдаг. Оруулах тодорхой дараалал байхгүй боловч гаралтыг ажиглах үед TreeSet нь элементүүдийн өсөх дарааллыг хадгалж байгааг харж болно.
Хэшсет гэж юу вэ?
HashSet анги нь Set Interface-ийг хэрэгжүүлдэг AbstractSet ангиллыг өргөжүүлдэг. Set интерфэйс нь Цуглуулга болон Давталттай интерфэйсүүдийг шаталсан дарааллаар өвлөн авдаг. HashSet-д элементүүд өсөх дараалал болон оруулсан дарааллыг хадгалах баталгаа байхгүй. Хэрэв оруулсан дараалал нь A, B, C байсан бол утгууд нь C, A, B хэлбэрээр хадгалагдаж болно. Хадгалах дараалал нь A, B, C байж болно, гэхдээ оруулсан дараалал эсвэл өсөх дарааллыг хадгалах баталгаа байхгүй.
Зураг 02: HashSet-тэй програм
Дээрх программын дагуу HashSet төрлийн объект үүссэн. Мөрийн өгөгдлийн элементүүдийг нэмэх аргыг ашиглан тухайн объектод нэмнэ. Оруулсан өгөгдлийн дараалал нь L, R, M, M, R, L. Давтагчийг ашиглан хадгалсан утгуудыг дэлгэцэн дээр хэвлэнэ. Гаралт нь R L M. Хэдийгээр тус бүрээс хоёр L, R, M үсэг байгаа ч тус бүрээс зөвхөн нэг үсэг харагдана. Тиймээс HashSet нь өвөрмөц элементүүдийг хадгалдаг. Гаралтыг ажиглах үед өсөх дараалал байхгүй эсвэл оруулсан дараалал хадгалагдаж байгаа нь харагдаж байна.
TreeSet болон HashSet хоёрын ижил төстэй зүйл юу вэ?
- TreeSet болон HashSet хоёулаа цуглуулгын шатлалд хамаарах ангиуд юм.
- TreeSet болон HashSet хоёулаа зөвхөн өвөрмөц элементүүдийг хадгалдаг.
- TreeSet болон HashSet-ийг хоёуланг нь олон элемент хадгалах, удирдахад ашиглаж болно.
- TreeSet болон HashSet хоёулаа оруулсан дарааллыг хадгалдаггүй.
TreeSet болон HashSet хоёрын ялгаа юу вэ?
TreeSet vs HashSet |
|
TreeSet нь цуглуулгын шатлалын анги бөгөөд өвөрмөц элементүүдийг өсөх дарааллаар хадгалахад ашиглагддаг. | HashSet нь цуглуулгын шатлалын анги бөгөөд Hashing механизм ашиглан өвөрмөц элементүүдийг хадгалахад ашиглагддаг. |
Элемент хадгалах | |
TreeSet нь элементүүдийг өсөх дарааллаар хадгалдаг. | HashSet нь элементүүдийг өсөх дарааллаар хадгалдаггүй. |
Хураангуй – TreeSet vs HashSet
Програмчлалд өгөгдлийн элементүүдийг динамикаар хадгалах шаардлагатай. Java зэрэг програмчлалын хэлүүд нь цуглуулгыг дэмждэг. Цуглуулгын шатлалд хэд хэдэн интерфейс болон ангиуд байдаг. TreeSet болон HashSet нь Цуглуулгын шатлалын хоёр анги юм. Аль аль нь Set интерфейсийг хэрэгжүүлдэг. TreeSet нь Set интерфейсийг хэрэгжүүлдэг анги бөгөөд өвөрмөц элементүүдийг өсөх дарааллаар хадгалахад ашигладаг. HashSet нь Set интерфейсийг хэрэгжүүлдэг анги бөгөөд Hashing механизмыг ашиглан өвөрмөц элементүүдийг хадгалахад ашигладаг. TreeSet болон HashSet хоёрын ялгаа нь TreeSet нь элементүүдийг өсөх дарааллаар хадгалдаг бол HashSet нь элементүүдийг өсөх дарааллаар хадгалдаггүй. Энэ нийтлэлд TreeSet болон HashSet хоёрын ялгааг авч үзсэн.