Колекција (програмирање)
У информатици, колекција је класа, структура података,[1][2] или апстрактни тип података (АДТ) чије су инстанце колекције других објеката. Другим речима, они чувају објекте на орагнизован начин који прати специфична приступна правила. Величина колекције зависи од броја објеката (елемента) које садржи. Основна примена различитих типова колекција може варирати у комплексноти простора и времена, која пружа флексиблиност при бирању тачне имплементације за дати сценарио.
Преглед
уредиНа колекције се може гледати на три начина:
- приступ, то је начин приступу објекта колекције. У случају низова, пристип се извршава са индексом низа. У случају стекова, приступ се извршава према ЛИФО(последњи унутра, први споља) редоследу (алтернативно име: ФИЛО, први унутра, последњи споља)[3] и у случају редова извршава се према ФИФО(први унутра, први споља) редоследу (алтернативно име: ЛИЛО, последњи унутра, последњи споља);[3]FIFO(investopedia.com)</ref>[4]
- складиштење, начин складиштења објеката колекције,
- прелажење, то је начин прелажења објеката колекције.
За колекције класа се очекује да имплементују методе да раде следеће:
- направити празну колекцију;
- убацити објекте у колекцију;
- избрисати објекте из колекције;
- избрисати све објекте у колекцији (очисти);
- приступити објектима у колекцији;
- приступити одређеном броју објеката у колекцији (величина).
Колекције су понекад имплементоване у конјукцију преко итератора.
Колекције базиране на референцама и вредностима
уредиКолекције се могу поделити у две групе:
- колекције базиране на вредностима;
- колекције базиране на референцама.
Колекције базиране на вредностима
уредиКолекције базиране на вредностима чувају копије објеката. Када се приступи објекту, објекат враћа копију њега. Ако се спољни објекат промењен после његовог убацивања у колекцију, не утиче на садржај колекције.
Колекције базиране на референцама
уредиКолекције базиране на референцама чувају показиваче или референце за објекте. Када се приступи објекту, објекат враћа референцу. Ако је спољни објекат промењен после његовог убацивања у колекцију, утиче на садржај колекције.
Слободна вредности и асоцијативне колекције
уредиКолекције се могу поделити у две групе:
- колекције слободне вредности;
- асоцијативне колекције.
Колекције слободне вредности
уредиСваки објекат је сачуван независно у колекцији и приступа му се директно или са итератором.
Асоцијативне колекције
уредиАсоцијативни низ, мапа, или речник је колекција која се састоји из (кључ, вредност) парова, таквих да сваки кључ се појављује највише једном у колекцији. Кључ служи да се пронађе вредност, објекта, ако је сачуван у колекцији.
Примери колекција
уредиКолекције су подељене у Стандардној библиотеци шаблона у асоцијативне колекције и стандардне колекције секвенци. Осим ова два типа, постоје адаптери колекција. Структурни подаци који су имплементовани преко колекција садрже низове, листе, мапе, редове, скупове, стекове, табеле, стабла и векторе.
Графичке колекције
уредиПомоћни алати виџета користе специјалне виџете који се називају Колекције за груписање других виџета (прозора, панела,...). Осим графичких особина, имају исти тип понашања као колекције класа, пошто чувају листу дечијих виџета, и дозвољавају додавање, уклањање, или повратак виџета међу њиховом децом.
Имплементације
уреди- .NET: System.Collections (MSDN)
- ActionScript3: AS3Commons Collections Framework
- C++: C++ Standard Library (SC++L) or the obsolete Standard Template Library (STL)
- Java: Java collections framework (JCF)
- Objective-C: part of the Foundation Kit
- PL/SQL Collections[5]
- Python: has built in containers list, dict, tuple & set and can be further extended by the collections module
- Scala Mutable and Immutable Collections in the packages
scala.collection.mutable
andscala.collection.immutable
Види још
уредиРеференце
уреди- ^ Paul E. Black (ed.), entry for data structure in Dictionary of Algorithms and Data Structures.
- ^ Entry data structure in the Encyclopædia Britannica (2009) Online entry Accessed on Oct 04, 2011.
- ^ а б LIFO(investopedia.com)
- ^ „FIFO(businessdictionary.com)”. Архивирано из оригинала 27. 08. 2016. г. Приступљено 19. 11. 2015.
- ^ "PL/SQL Collections and Records".
Спољашње везе
уреди- Container Data Structure Declaration and Initialization
- Container data structures
- Python SortedContainers module A fast implementation of sorted list, sorted dict, and sorted set data types in Python.