Java Collections Framework

All lectures for KY purposes
Деңгээл , Сабак
жеткиликтүү

Киришүү

Көпчүлүк программаларда кандайдыр бир маалымат топтомун сактоо муктаждыгы пайда болот. Бул саптар жана сандар, объектилер жана башкалар болушу мүмкүн. Мындай максаттар үчүн массивдер ылайыктуу. Бирок массивдерде айрым чектөөлөр бар. Мисалы, туруктуу өлчөмү, элементтерди өчүрүү мүмкүнчүлүгүнүн жоктугу, ортоңку жерге элементтерди киргизүү мүмкүнчүлүгү жок. Ушул жана башка чектөөлөрдү айланып өтүү үчүн коллекциялар түзүлгөн. Бардык коллекция түрлөрүндө (алар көп, биз бул лекцияда мындан ары көрөбүз), өз өлчөмүн динамикалык түрдө өзгөртүү мүмкүнчүлүгү бар. Айрым коллекция түрлөрү иреттелген элементтерди сактап, алардын кошулушуна жараша жаңы элементтерди автоматтык түрдө иреттей алат.

Бул лекцияда биз негизги коллекциялардын класстардын иерархиясы Java Collections Framework менен таанышабыз. Ошондой эле, стандарттуу Java Collections Frameworkти кеңейткен ар кандай альтернативалуу китепканалар бар. Эң белгилүүсу — Guava (Google Collections Library).

* Схемада бардык интерфейстер жана класстар көрсөтүлгөн эмес. Алардын айрымдары жөнөкөйлөтүү максатында алынган

Негизги интерфейстер

Схемада көрүнүп тургандай, эки негизги интерфейс бар, алардан башка коллекция класстары жана интерфейстер ишке ашырылат.

Бул интерфейстерди карап көрөлү:

  1. Collection – өзүнчө элементтердин (объекттердин) топтомун камтыган жалпы коллекция. Бул коллекцияда элементтер менен иштөө үчүн негизги ыкмалар бар: киргизүү (add, addAll), өчүрүү (remove, removeAll, clear), издөө (contains, containsAll), коллекциянын боштугун текшерүү (isEmpty) жана өлчөмү (size).

  2. Map — коллекция, структурасы "ключ — мааниси" жуптарын көрсөтөт. Баардыгы бир Map ичинде ар бир ачкыч уникалдуу болуш керек: эки бирдей ачкыч жок. Бул коллекцияны кээде сөздүк (dictionary) деп аташат. Map — өзүнчө интерфейс. Ал Collection интерфейсин ишке ашырбайт, бирок Java Collections Frameworkке кирет.

Map менен иштөө үчүн негизги ыкмалар:

  • киргизүү (put, putAll)

  • алуу (get, keySet, values, entrySet)

  • өчүрүү (remove, clear)

  • издөө (containsKey, containsValue)

  • коллекциянын боштугун текшерүү (isEmpty)

  • өлчөмү (size)

Эми алардын ар бири жөнүндө кененирээк сүйлөшөлү.

Collection Интерфейси

Collection интерфейси Iterable интерфейсин кеңейтет, ал эми бул интерфейсте жалгыз iterator() деген метод бар. Бул биз үчүн, Iterable дан мурасталган коллекция ар кандай коллекция элементтерине кирүүчү итераторду кайтара ала тургандыгын билдирет.

Итератор – бул өзгөчө объект, анын жардамы менен коллекциянын ичиндеги элементтерге жетүү мүмкүнчүлүгүн алууга болот, анын ишке ашыруусунун өзгөчөлүгүн эске албастан.

Рисунктан көрүнүп тургандай, Collection интерфейсинен 3 интерфейс мурасталат: List, Queue жана Set. Азыр ар бирин кыскача карап чыгабыз.

List — бул иреттелген коллекция, дубликаттарга жол берет. Ошондой эле, башка аталыштары да бар — тизмек (sequence), тизмек. Listтин өзгөчөлүгү элементтердин номерлениши жана номер (индекс) боюнча кайрылууга мүмкүнчүлүгү бар.

Queue — англис тилинен которгондо очередь дегенди билдирет. Туура айтылышы: Queue — КЬЮ. Queue да элементтер алардын кошулуш тартибинде сакталат.

Set – тизмектен айырмаланып, элементтердин кайталоосуз, иреттелбеген коллекцияны сүрөттөйт. Set математикадагы көптүктөргө (множество) барабар.

Map Интерфейсинин Ишке Ашыруулары

Map интерфейсинде уникалдуу ачкычтардын маанилер менен болгон өз ара катышын көрөбүз.


interface Map<K, V>

мында K — бул ачкычтардын түрү, ал эми V — сакталган маанилердин түрү.

Ачкыч аркылуу биз Map дан маалыматтарды чыгара алабыз. Mapке элемент кошуу үчүн ачкыч менен маанини белгилөө керек.

Айрым Map ишке ашырууларын карап көрөлү:

  1. HashMapMapдин ишке ашыруусу, анын негизинде хэш таблицалар. Ар кандай түрдөгү ачкычтарды жана маанилерди, анын ичинде null да сактай алат. Элементтердин тартибине кепилдик берилбейт.

  2. LinkedHashMap — маалыматтарды элементтердин байланышы менен сактайт. Элементтер кошулуш тартибинде жайгашкан.

  3. TreeMapSortedMap интерфейсинин (аркасында NavigableMap) ишке ашырылышы. Мындай структурада элементтер сортоолонгон абалда сакталат (жаңы элемент кошулганда коллекция автоматтык түрдө сорттолот). TreeMap чоң көлөмдөгү сортоолонгон маалыматтарды ылдам издөө менен сактоого эң ылайыктуу.

Эски коллекциялар

Javaнын мурунку версияларынан эски коллекциялар калган (артка шайкештикти колдоо үчүн), аларды колдонуу сунушталбайт:

  • EnumerationIterator интерфейсинин аналогу;

  • Vector — иреттелген элементтер тизмеги, ArrayList классынын аналогу;

  • Stack — элементтерди стек принциби боюнча сактаган структура (мисалы, китептердин стогу), элементтерди түртүү (push) жана чыгарып алуу (pop) ыкмалары бар;

  • DictionaryMap интерфейсинин аналогу, бирок ал абстракттуу класс;

  • HashtableHashMapтин аналогу.

Collections Framework тууралуу кеңири маалыматты бул макаладан окуй аласың.

Комментарийлер
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION