Scjp 6, falando sobre conjuntos

Pra quem ja fez a prova, ou pra quem ja dominou este tópico, alguem tem alguma dica para decorar os XXX tipos de conjuntos e saber diferencialos ?, tem conjunto pra caramba, e quando junta todos eles eu fico perdidaço haha.

Bom…conjuntos propriamente ditos não tem tantos assim que caem na prova:

Set, SortedSet, HashSet, LinkedHashSet, TreeSet, NavigableSet. Acho que só.
Todos estão na mesma hierarquia de classes, então não é tão difícil assim decorar.
Agora se vc estiver falando sobre TODAS as coleções, independente de serem conjuntos ou não, aí sim é um número razoável.

Acho que o melhor jeito de aprender é desenhar a hierarquia de classes na mão…umas duas vezes…e ler sobre qual coleção usar para resolver determinado problema.

É melhor decorar direitinho sim, que essas questões são mais fáceis que as de threads - só precisam de um pouco de decoreba mesmo. É preciso saber diferenciá-los sim. Mas se você já teve a disciplina de Estruturas de Dados na faculdade, deve achar que isso é moleza.

Tem q saber a diferenca de Set, Map e os outros tipo List.

Ai dps as particularidade de cada uma das colections desse tipo tenta ir dando uma decorada…

Cai bastante coisa sobre isso, é bom ir sabendo bem…

Resumo…

Faça resumos…

E faça e refaça aquele desenho de hierarquias que tem no livro da Kathy.
Recomendo pegar o desenho do livro 6, pois tem sobre as novas interfaces…

Mole mole decorar!

Uma coisa que ajuda bastante mesmo é fazer uns cinco ou seis programinhas “hello, world” que usem essas classes. Isso ajuda a você a entender:

  • Como inserir, remover e localizar um elemento ou uma entrada
  • Como os elementos ou entradas são ordenados
  • O que ocorre quando você remove um elemento ao mesmo tempo em que você está percorrendo um conjunto.

a interface Set eu ja consegui fazer um decoreba ontem mesmo quando postei o topico. agora o problema vai ser as outras :o

não testei isto ontem, boa ideia!

eu to tirando umas 2 horas por dia pra estudar, ja to acho que no terceiro dia de conjuntos, de longe, ta sendo a coisa mais tensa, nem threads deram tanto trabalho assim :?

se alguem tiver mais dicas ai, ta sendo bem vindo :slight_smile:

Olá!

Sabendo pelo menos a interface, pelo nome da pra saber mais ou menos o comportamento, por exemplo:

Map -> Mapa, do tipo chave/valor. Você coloca com um put(chave, valor) e pega o valor com um get(chave);
Set -> Conjunto, parecido com um conjunto numérico. A principal característica é que não pode possuir valores iguais. Adiciona com add(elemento) e recupera com get(indice);
List -> Implementação de lista de elementos, mesmo esquema do Set (add/get).

Set e List são iguais na manipulação dos dados porque estendem a mesma interface: Collection.

Daí pra frente, pelo nome da pra saber mais ou menos como funciona:

Hash -> Isso diz normalmente que os elementos vão ser comparados utilizando o resultado de hashCode(). Por exemplo HashMap, HashSet;
Tree -> Diz que a coleção será ordenada em árvore. TreeSet, TreeMap;
Linked -> Diz que a coleção será encadeada. LinkedHashSet, LinkedList;
Array -> Já diz no nome que funcionará como um array (dinâmico). ArrayList.

Juntando os dois temos:

HashMap -> Mapa do tipo chave/valor que recupera os valores baseando-se na igualdade dos hashCodes das chaves;
TreeSet -> Conjunto que não aceita valores iguais ordenado em árvore;
LinkedList -> Uma coleção no formato de lista encadeada.

É mais ou menos assim, ainda existem algumas particularidades de cada coleção que não adianta, tem que decorar mesmo.

Abraços

[quote=Link_pg]Olá!

Sabendo pelo menos a interface, pelo nome da pra saber mais ou menos o comportamento, por exemplo:

Map -> Mapa, do tipo chave/valor. Você coloca com um put(chave, valor) e pega o valor com um get(chave);
Set -> Conjunto, parecido com um conjunto numérico. A principal característica é que não pode possuir valores iguais. Adiciona com add(elemento) e recupera com get(indice);
List -> Implementação de lista de elementos, mesmo esquema do Set (add/get).

Set e List são iguais na manipulação dos dados porque estendem a mesma interface: Collection.

Daí pra frente, pelo nome da pra saber mais ou menos como funciona:

Hash -> Isso diz normalmente que os elementos vão ser comparados utilizando o resultado de hashCode(). Por exemplo HashMap, HashSet;
Tree -> Diz que a coleção será ordenada em árvore. TreeSet, TreeMap;
Linked -> Diz que a coleção será encadeada. LinkedHashSet, LinkedList;
Array -> Já diz no nome que funcionará como um array (dinâmico). ArrayList.

Juntando os dois temos:

HashMap -> Mapa do tipo chave/valor que recupera os valores baseando-se na igualdade dos hashCodes das chaves;
TreeSet -> Conjunto que não aceita valores iguais ordenado em árvore;
LinkedList -> Uma coleção no formato de lista encadeada.

É mais ou menos assim, ainda existem algumas particularidades de cada coleção que não adianta, tem que decorar mesmo.

Abraços
[/quote]

woot ! era disso que eu tava falando :smiley:
obrigado!

To contigo, tenho também dificuldade de entender as diferenças.
Principalmente quais classes fazem uso do hashCode() para pesquisar/recuperar um objeto.
Já estudei o capítulo mas ainda não ficou muito claro.

Se alguém tiver um material bom, que explique de forma diferente do livro seria ótimo.

[quote=rmalati]To contigo, tenho também dificuldade de entender as diferenças.
Principalmente quais classes fazem uso do hashCode() para pesquisar/recuperar um objeto.
Já estudei o capítulo mas ainda não ficou muito claro.

Se alguém tiver um material bom, que explique de forma diferente do livro seria ótimo.
[/quote]

o Set pra mim já esta entendido. Na minha visão ficou algo como:

HashSet = um vetor dinâmico que aumenta de tamanho conforme a adição. ordena por ordem de inserção.
Vector (Set)= HashSet com metodos sincronizado.
TreeSet = HashSet que possui mais metodos, esses metodos são especilizados para conceder o a estrutura de dados de Pilha e/ou Fila, com metodos para adicionar na ultima posição, adicionar na primeira posição, resgatar o primeiro e etc … :smiley:

agora só falta todos os outros, como eu jali bastante sobre, e ja tenho um pouco de ideia de como funcuiona conjuntos, eu pulei esse capitulo do livro um pouco pra não ficar encalhado.

E pelo que eu tenho notado, a interface List vai dar um pouco de trabalho, ja que a mesma não usa as duplicidades :stuck_out_tongue:

Atenção!!! Cuidado com a confusão. Não vá “rodar” na prova.

O TreeSet NÃO É um HashSet e sim apenas um Set.

Portanto, ele não precisa que a classe redefina hashCode e equals, entretanto, como é um SortedSet, ele precisa que você passe um Comparator ou então que a classe implemente Comparable.

Um TreeSet não tem nada a ver com pilhas ou filas, que usam List, não Set.
Se for fazer a SCJP 6, não se esquecer que SortedSet implementa agora a interface NavigableSet, que permite você percorrer os elementos para frente e para trás também.

OK?