Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Pq se usa o HashSet? O LinkedHashSet não seria mais vantajoso?

Considerando que o LinkedHashSet contém as características do HashSet + a ordenação dos elementos, ele não seria mais vantajoso?

1 resposta
solução!

Opa Caroline, tudo tranquilo?

Veja bem, o LinkedHashSet realmente pega um pouco dos dois mundos. Porém, ao mesmo tempo que essa implementação possui um desempenho quase similar ao HashSet, veja que ele ainda "perde" para o TreeSet no quesito ordenação, dependendo do que queremos fazer. E o pulo do gato está na forma como ele ordena seus elementos!

Veja que diferente do TreeSet, que ordena seus elementos inseridos de acordo com um Comparator(ou por ordem natural), o LinkedHashSet simplesmente mantém a ordem de inserção dos elementos à medida que são inseridos. Para ver na prática a vantagem do TreeSet, eu recomendo você fazer o exercício proposto na última atividade dessa aula, onde ordenamos uma lista de funcionários de acordo com suas idades.

Vou deixar aqui alguns pontos importantes que talvez ajudem a esclarecer as diferenças entre essas implementações. Essas e mais informações podem ser encontradas nesse endereço (site em inglês).

Ordem dos Elementos

  • O HashSet não mantém nenhuma ordem de elementos.

  • LinkedHashSet mantém a ordem de inserção dos elementos. ou seja, os elementos são colocados à medida que são inseridos.

  • TreeSet ordena os elementos de acordo com o Comparador fornecido. Se nenhum comparador for fornecido, os elementos serão colocados em sua ordem ascendente natural.

Desempenho

  • HashSet oferece melhor desempenho do que LinkedHashSet e TreeSet.

  • O desempenho de LinkedHashSet está entre HashSet e TreeSet. Seu desempenho é quase semelhante ao HashSet. Mas um pouco no lado mais lento, pois também mantém LinkedList internamente para manter a ordem de inserção dos elementos.

  • TreeSet oferece menos desempenho do que HashSet e LinkedHashSet, pois tem que classificar os elementos após cada operação de inserção e remoção.

Quando usar?

  • Use HashSet se você não quiser manter nenhuma ordem de elementos.

  • Use LinkedHashSet se quiser manter a ordem de inserção dos elementos.

  • Use TreeSet se quiser classificar os elementos de acordo com algum Comparador.

Bom, acho que é isso. Se ficou alguma dúvida é só avisar!

Abraços e bons estudos!!