cat • container

Classes Conteineres Nativas

O interpretador Gambas te oferece dois tipos de classes conteineres nativas:

Arrays

Um array é um conjunto de valores indexados por um Integer que se localizam em posições consecutivas na memória.

Todos os valores em um array têm o mesmo tipo de dado, e existe uma classe array para cada tipo de dado nativo, exceto para o tipo Boolean.

Veja Arrays Nativos para mais informações.

Arrays podem ser multi-dimensionais, i.e. valores são indexados por mais de um Integer.

Se um array tem uma dimensão, então ele pode ser encolhido ou expandido dinamicamente, com o método Resize.

Collections

Uma Collection é um conjunto de valores indexados por uma String.

Somente valores Variant podem ser armazenados em uma Collection.

Os valores são armazenados internamente em uma tabela hash que cresce dinamicamente quando mais e mais elementos são inseridos nela.

Qual usar?

Eis uma comparação rápida entre os três tipos de classes conteineres:

Tabela de comparação de conteineres

Array Collection
Armazenamento interno Um bloco de memória. Tabela hash.

Significa um array de slots, cada um sendo uma lista encadeada de valores que possuem o mesmo código hash.

Tipo de dado Chave Integer String
Velocidade de acesso Imediato

O acesso é imediato.

Rápido

A chave deve ser comparada com todas as outras chaves que possuem o mesmo código hash.

Velocidade de inserção Imediato ou Lento

O bloco de memória é às vezes redimensionado se necessário. E inserir no meio de um array requer que parte do bloco de memória seja movida.

Rápido ou Lento

O código hash chave oferece um índice em uma lista encadeada de slots de memória.

A tabela hash deve ser redimensionada e recalculada de vez em quando para manter o acesso rápido.

Velocidade de deleção Immediato ou Lento

O bloco de memória é às vezes redimensionado se necessário. E deletar no meio de um array requer que parte do bloco de memória seja movida.

Rápido ou Lento

Uma vez que o elemento seja encontrado, a deleção é imediata.

A tabela hash deve ser redimensionada e recalculada de vez em quando para manter o acesso rápido.

Veja também