A classe Set

(PECL ds >= 1.0.0)

Introdução

Um Set é uma sequência de valores únicos. Esta implementação usa a mesma tabela de hash que Ds\Map, onde os valores são usados como chaves e o valor mapeado é ignorado.

Pontos Fortes

  • Os valores podem ser de qualquer tipo, incluindo objetos.
  • Suporta a sintaxe de array (colchetes).
  • A ordem de inserção é preservada.
  • Libera automaticamente a memória alocada quando seu tamanho fica baixo o suficiente.
  • add(), remove() e contains() são todos O(1).

Pontos Fracos

  • Não suporta push(), pop(), insert(), shift() ou unshift().
  • get() é O(n) se houver valores excluídos no buffer antes do índice acessado, O(1) caso contrário.

Resumo da classe

class Ds\Set implements Ds\Collection, ArrayAccess {
/* Constantes */
const int MIN_CAPACITY = 8;
/* Métodos */
public function add(mixed ...$values): void
public function allocate(int $capacity): void
public function capacity(): int
public function clear(): void
public function contains(mixed ...$values): bool
public function copy(): Ds\Set
public function diff(Ds\Set $set): Ds\Set
public function filter(callable $callback = ?): Ds\Set
public function first(): mixed
public function get(int $index): mixed
public function intersect(Ds\Set $set): Ds\Set
public function isEmpty(): bool
public function join(string $glue = ?): string
public function last(): mixed
public function map(callable $callback): Ds\Set
public function merge(mixed $values): Ds\Set
public function reduce(callable $callback, mixed $initial = ?): mixed
public function remove(mixed ...$values): void
public function reverse(): void
public function reversed(): Ds\Set
public function slice(int $index, int $length = ?): Ds\Set
public function sort(callable $comparator = ?): void
public function sorted(callable $comparator = ?): Ds\Set
public function sum(): int|float
public function toArray(): array
public function union(Ds\Set $set): Ds\Set
public function xor(Ds\Set $set): Ds\Set
}

Constantes predefinidas

Ds\Set::MIN_CAPACITY

Registro de Alterações

Versão Descrição
PECL ds 1.3.0 A classe agora implementa ArrayAccess.
PECL ds 1.2.7 Adicionado o método Ds\Set::map().
PECL ds 1.2.0 Ds\Set::MIN_CAPACITY foi alterada de 16 para 8.

Índice