Duvida Certificação OCJP- TreeSet

2 respostas
mausexdd

Boa noite amigos,

segue o codigo de um simulado:

package simuladoCamiloLopes;

import java.util.TreeSet;

public class TreeSeting {
	public static void main(String[] args) {
		TreeSet<String> t = new TreeSet<String>();
		if (t.add("one"))
			if (t.add("Two"))
				if (t.add("one"))
					t.add("two");
		for (String s : t) {
			System.out.println(s);
		}
	}
}

Debuguei o mesmo , (Nunca tinha visto, muito menos se quer…utilizado esta classe)no mas percebi que ela faz um compare antes de adicionar
no Array de String se é que podese chamar de Array , Melhor no TreeSet (cada macaco no seu galho, enfim esta lista de Strings) dados que não compoem nenhum
index da lista?

poi isso a impressão seria

TWO ONE

Esta classe realiza mais alguma função especifica?não intendi bem na documentação

2 Respostas

Tenkara_Kiddo

Boa noite caro,
acontece o seguinte… a interface Set faz a mesma coisa que a List, porém com um adicional, as Sets ignoram elementos duplicados,
e como ele verifica isso? com o compareTo de String que por consequência utiliza o método equals de String,
ou seja

quando ele adiciona

if (t.add("one")) t.add("two");

pela segunda vez, o equals de String diz que a string “one” já foi adicionada na coleção.

lembrando que ele so vai utilizar Equals e CompareTo de String pois você definiu no Generics da TreeList como String
ex

Obs.
para fazer um teste, tente utilizar um TreeSet de um Objeto qualquer que não sobrescreve Equals de Object, o que vai ocasionar mal funcionamento na comparação de Set

Equals de Object compara a instancia de objeto então

Object c1 = null;

c1 = new Object();
// é diferente de
c1 = new Object();

espero que eu tenha ajudado.

[]'s

ViniGodoy

O TreeSet, além de ignorar duplicadas, também ordena os elementos. Por isso ele faz a chamada ao compareTo. Ele usa para isso uma comparação de acordo com a tabela Unicode, a menos que você forneça a ele um comparador.

Veja um exemplo:

TreeSet&lt;String&gt; treeSet = new TreeSet&lt;String&gt;(); treeSet.add("Irritarem-se"); treeSet.add("Caiu"); treeSet.add("A"); treeSet.add("Jocosamente"); treeSet.add("Da"); treeSet.add("Banana"); treeSet.add("Fazendo"); treeSet.add("Gatos"); treeSet.add("Hermafroditas"); treeSet.add("Escada"); for (String texto : treeSet) { System.out.print(texto); System.out.print(" "); } System.out.println();

Note que a primeira letra de cada palavra, no texto impresso, segue as letras do alfabeto.

Criado 1 de julho de 2011
Ultima resposta 1 de jul. de 2011
Respostas 2
Participantes 3