Usando TreeSet, dúvida com tipagem

5 respostas
A

pq eu iria querer tipar só um lado? existe vantagem? tipei só TreeSet, Set não tipei...

public static void main(String[] args) {
		Set listaNomes = new TreeSet<String>();
		listaNomes.add("André");
		listaNomes.add("André");
		listaNomes.add("Paula");
		listaNomes.add("Júlia");
		
		System.out.println(listaNomes);

	}

5 Respostas

evertonsilvagomesjav
andredecotia:
pq eu iria querer tipar só um lado? existe vantagem? tipei só TreeSet, Set não tipei...
public static void main(String[] args) {
		Set listaNomes = new TreeSet<String>();
		listaNomes.add("André");
		listaNomes.add("André");
		listaNomes.add("Paula");
		listaNomes.add("Júlia");
		
		System.out.println(listaNomes);

	}

Cara á questao nao é "pq vc iria querer", vc tem que ver o funcionamento disso ai. Se vc usar essa forma, seu TreeSet esta adicionando tudo e nao so Strings. E tb isso é te gerado um Warning.

Se vc ta estudando pelo livro da Kathy Sierra, vc verá que ela fala sobre codigos antigos que nao possuem Generics, um motivo pelo qual vc "iria querer usar" algo dessa forma.

charlesbraw

Aproveitando a dúvida do andredecotia…
Quando eu uso um TreeSet e adiciono um objeto a ele, se eu tentar adiconar outro tipo de objeto ele vai gerar um "java.lang.ClassCastException:" correto?
Isso é porque ele não vai conseguir usar o a comparação para ordena-lo. Estou correto?

evertonsilvagomesjav

charlesbraw:
Aproveitando a dúvida do andredecotia…
Quando eu uso um TreeSet e adiciono um objeto a ele, se eu tentar adiconar outro tipo de objeto ele vai gerar um "java.lang.ClassCastException:" correto?
Isso é porque ele não vai conseguir usar o a comparação para ordena-lo. Estou correto?

O que acontece é que como o TreeSet é classificado ele vai tentar comparar e ordenar seus objetos de alguma forma, modo natural ou n. Se vc estiver objetos que não sao “comparaveis” gera á exceção.

ViniGodoy

Só existe uma, e somente uma, razão para você não tipar uma coleção: Utiliza-la com código antigo.

Se você tem uma API que está compilada num .jar, feita em Java 1.4 ou inferior, e por isso ela só aceita uma coleção antiga, e ela tem algum método útil pra você como:

Você poderá fazer uma chamada a esse método com seu set tipado:

Set&lt;Aluno&gt; alunos = new TreeSet&lt;Aluno&gt;(); double dispersao = calcularDispersao(alunos);

No resto, não existe nenhuma razão para omitir o tipo da sua coleção.

deyvid

Fale andredecotia sua pergunta é um pouco estranha. mas …

A mistura de código legado com código atual é faz com que isso aconteça. O código legado, tá funcionando, custou caro pro cliente e pro projeto vou mexer no que tá funionando? É claro que não! Ao menos que role uns extras.

Mas isso não fórum para esse tipo de “Dúvida”. Aqui é mais pra quem quer se certificar em Java para programador. Não importa como o código esteja sendo apresentado o importante é que se entenda o assunto e as questão.

Espero ainda ve um depoimento seu do tipo “PASSEI !!! 99% OCP-JAVA”, não seria legal? Isso sim importa aqui nesse fórum

Um abração e sucesso na sua estrada, seja lá qual for ela.

:smiley:

Criado 21 de setembro de 2010
Ultima resposta 22 de set. de 2010
Respostas 5
Participantes 5