SlideShare ist ein Scribd-Unternehmen logo
1 von 11
HASHSET
Emanoel V. Justino
Gilberto Guimarães
OQUE É / COMO FUNCIONA
É uma coleção totalmente desordenada que não se pode pegar
valores com get(index), e só com os métodos: set.iterator();
iterator.hasNext(); iterator.next();
Usam o retorno do método hashCode() das classes Object (suas
filhas a implementam de acordo), visando uma velocidade por
comparação de hashs, e não por igualdade de referencia, etc…
CASOS DE USO (QUANDO USAR)
Um exemplo comum do uso constante do HashSet é em
mapeamentos OneToMany do Hibernate para garantir uma
agilidade na inserção de elementos, que faz-se necessário em
aplicações com uma grande quantidade de dados.
Outro exemplo é, se você receber um pedido para um
determinado código de fornecedor, você pode querer
verificar para garantir que o código do fornecedor pertence
ao conjunto de códigos de fornecedores.
Nesses casos, o HashSet<T> é útil para realizar consultas
super-rápidas onde a ordem não é importante.
EXEMPLO DE USO:
TREESET
OQUE É / COMO FUNCIONA
Conhecido por árvore negra, tem como sua principal caracteristica ser o unico Set
que implementa a interface SortedSet em vez de Set diretamente, mas de qualquer
forma SortedSet implementa Set, assim continuamos tendo os mesmo métodos no
TreeSet.
Por ele implementar o SortedSet ele possui elementos ordenados automaticamente.
Porém a complexidade para os métodos add, remove e contains são bem maiores
que do HashSet.
CASOS DE USO (QUANDO USAR)
TreeSet – Preserva a ordem natural dos elementos, porem
ocorre uma perda de performance na inserção e deleção
TreeSet utiliza-se de uma árvore Binária para alinhar os
elementos. Esse tipo de abordagem se mostra bastante
eficiente para procurar elementos, esta abordagem consta em
se varrer uma árvore balanceada, contudo se ponto fraco
reside justamente no balanceamento da árvore, que pode
gerar lentidão a depender da quantidade de elementos
existentes.
EXEMPLO DE USO:
LINKEDHASHSET
OQUE É / COMO FUNCIONA
LinkedHashSet – é derivada de HashSet, mas mantém uma lista duplamente
ligada através de seus itens. Seus elementos são iterados na ordem em que
foram inseridos. Opcionalmente é possível criar um LinkedHashSet que seja
percorrido na ordem em que os elementos foram acessados na última iteração.
Ela é um meio termo entre HashSet e TreeSet, ou seja, ela nos proporciona
uma boa performance e pode ser ordenada.
No LinkedHashSet os elementos continuam na ordem que são inseridos,
diferente do HashSet que “embaralha” tudo, é parecido com ArrayList.
Sua a complexidade também é O(1) para operações básicas, sendo assim,
adicionar (add), remover (remove) e verificar (contains), tem performace
semelhante ao HashSet.
Quando precisar de um Set ordenado, sugiro o uso do LinkedHashSet, pois
tem boa performance e ainda sim poder ser ordenada.
EXEMPLO DE USO:

Weitere ähnliche Inhalte

Ähnlich wie HashSet, TreeSet e LinkedHashSet

Ähnlich wie HashSet, TreeSet e LinkedHashSet (12)

Estruturas de Dados - Tabelas de Espalhamento (Hash Table)
Estruturas de Dados - Tabelas de Espalhamento (Hash Table)Estruturas de Dados - Tabelas de Espalhamento (Hash Table)
Estruturas de Dados - Tabelas de Espalhamento (Hash Table)
 
Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)Estrutura de Dados Apoio (Tabela Hash)
Estrutura de Dados Apoio (Tabela Hash)
 
Banco de dados oracle
Banco de dados oracleBanco de dados oracle
Banco de dados oracle
 
Csharp fundamentals
Csharp fundamentalsCsharp fundamentals
Csharp fundamentals
 
Java: strings e arrays
Java: strings e arraysJava: strings e arrays
Java: strings e arrays
 
Estudos Technocorp
Estudos TechnocorpEstudos Technocorp
Estudos Technocorp
 
Resumão java
Resumão javaResumão java
Resumão java
 
Slide Semana2 Rodrigo
Slide Semana2 RodrigoSlide Semana2 Rodrigo
Slide Semana2 Rodrigo
 
Slide Share s2 Rodd
Slide Share s2 RoddSlide Share s2 Rodd
Slide Share s2 Rodd
 
Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2Slide Semana2 Rodrigo2
Slide Semana2 Rodrigo2
 
Java: Collections
Java: CollectionsJava: Collections
Java: Collections
 
Slides collections
Slides collectionsSlides collections
Slides collections
 

HashSet, TreeSet e LinkedHashSet

  • 2. OQUE É / COMO FUNCIONA É uma coleção totalmente desordenada que não se pode pegar valores com get(index), e só com os métodos: set.iterator(); iterator.hasNext(); iterator.next(); Usam o retorno do método hashCode() das classes Object (suas filhas a implementam de acordo), visando uma velocidade por comparação de hashs, e não por igualdade de referencia, etc…
  • 3. CASOS DE USO (QUANDO USAR) Um exemplo comum do uso constante do HashSet é em mapeamentos OneToMany do Hibernate para garantir uma agilidade na inserção de elementos, que faz-se necessário em aplicações com uma grande quantidade de dados. Outro exemplo é, se você receber um pedido para um determinado código de fornecedor, você pode querer verificar para garantir que o código do fornecedor pertence ao conjunto de códigos de fornecedores. Nesses casos, o HashSet<T> é útil para realizar consultas super-rápidas onde a ordem não é importante.
  • 6. OQUE É / COMO FUNCIONA Conhecido por árvore negra, tem como sua principal caracteristica ser o unico Set que implementa a interface SortedSet em vez de Set diretamente, mas de qualquer forma SortedSet implementa Set, assim continuamos tendo os mesmo métodos no TreeSet. Por ele implementar o SortedSet ele possui elementos ordenados automaticamente. Porém a complexidade para os métodos add, remove e contains são bem maiores que do HashSet.
  • 7. CASOS DE USO (QUANDO USAR) TreeSet – Preserva a ordem natural dos elementos, porem ocorre uma perda de performance na inserção e deleção TreeSet utiliza-se de uma árvore Binária para alinhar os elementos. Esse tipo de abordagem se mostra bastante eficiente para procurar elementos, esta abordagem consta em se varrer uma árvore balanceada, contudo se ponto fraco reside justamente no balanceamento da árvore, que pode gerar lentidão a depender da quantidade de elementos existentes.
  • 10. OQUE É / COMO FUNCIONA LinkedHashSet – é derivada de HashSet, mas mantém uma lista duplamente ligada através de seus itens. Seus elementos são iterados na ordem em que foram inseridos. Opcionalmente é possível criar um LinkedHashSet que seja percorrido na ordem em que os elementos foram acessados na última iteração. Ela é um meio termo entre HashSet e TreeSet, ou seja, ela nos proporciona uma boa performance e pode ser ordenada. No LinkedHashSet os elementos continuam na ordem que são inseridos, diferente do HashSet que “embaralha” tudo, é parecido com ArrayList. Sua a complexidade também é O(1) para operações básicas, sendo assim, adicionar (add), remover (remove) e verificar (contains), tem performace semelhante ao HashSet. Quando precisar de um Set ordenado, sugiro o uso do LinkedHashSet, pois tem boa performance e ainda sim poder ser ordenada.