Inheemse Container Klassen

De Gambas interpreter biedt twee typen van inheemse container klassen:

Arrays

Een array is een set van waarden die geïndexeerd zijn door een Integer die opeenvolgend in het geheugen staan.

Alle waarden in een array hebben hetzelfde datatype, en er is een array klasse voor elk ingebouwd datatype, behalve voor het type Boolean.

Zie ook Native Arrays voor meer informatie daarover.

Arrays kunnen multi-demensionaal zijn, ttz waarden worden geïndexeerd door meer dan één Integer.

Als een array één dimensie heeft dan kan hij dynamisch uitgebreid of verkleind worden met de Resize methode.

Collections

Een Collection is a set of values indexed by a String.

Only Variant values can be stored in a Collection.

The values are internally stored in a hash table that grows dynamically when more and more elements are inserted in it.

Which one use ?

Here is a short comparison between the three kind of container classes:

Container Comparison Chart

Array Collection
Internal storage One memory block. Hash table.

It means one array of slots, each one being a linked list of values having the same hash code.
Key datatype Integer String
Access speed Immediate

The access is immediate.
Fast

The key must be compared with all other keys having the same hash code.
Insertion speed Immediate or Slow

The memory block is sometimes resized if needed. And inserting in the middle of the array needs moving part of the memory block.
Fast or Slow

The key hash code gives a index into a linked list of memory slots.

The hash table have to be resized and recalculated sometimes to keep the access fast.
Deletion speed Immediate or Slow

The memory block is sometimes resized if needed. And deleting in the middle of the array needs moving part of the memory block.
Fast or Slow

Once the element is found, the deletion is immediate.

The hash table have to be resized and recalculated sometimes to keep the access fast.

Zie ook