A camada subjacente de Treeset é a Keyset () do TreeMap, e o Treemap é implementado com base em árvores vermelhas e negras. As árvores vermelhas e pretas são uma árvore de busca binária equilibrada, que pode garantir que a diferença de altura entre as subárvores esquerda e direita de qualquer nó não exceda uma duas vezes a da árvore mais curta.
TreeMap é classificado por chave, para que os elementos em Treeset também sejam classificados. Obviamente, o método compareto () deve ser chamado quando o elemento é inserido no TreeSet, para que os elementos no TreeSet devem implementar a interface comparável. TreeSet como um conjunto, ele não permite que elementos duplicados apareçam. O TreeSet usa compareto () para julgar elementos duplicados, não iguais (), consulte o código a seguir.
importar java.util.TreeSet; importar org.junit.test; public class TestTreeSeT {classe Combine implementa comparável <BarnE> {private int p1; private int p2; public combin (int p1, int p2) {this.p1 = p1; this.p2 = p2;}@substituto int Hah HahH equals (objeto obj) {System.out.print ("se é igual" + this + "e" + obj); boolean ret = false; if (obj instância de combinar) {System.out.println ("se é igual" + this "e" + obj); combinar outros = (combinar) e (this (this.p1 ==>. outros.getp2 ());} System.out.println (":" + ret); retornar ret;}@substituir public int compareto (combinar o) {System.out.print ("compare" + this "e" + o); // apenas p1if (this.p1 <o.p1) {System.Int.Intl; > o.p1) {System.out.println (", retornar 1"); retornar 1;} else {System.out.println (", retornar 0"); retornar 0;}}@substituir public string tostring () {return "(" + p1 + p2 + ")";} intptp () (" + p1 + p2 +") ";} intpt getp () (" + p1 "," + p2 + ")";} Intp getp (") {this.p1 = p1;} public int getp2 () {return p2;} public void setp2 (int p2) {this.p2 = p2;}}@teste public void test () {combinar c1 = new combin (1); combinar c2 = novo combinar (1, 2); 2. while (! set.isEmpty ()) {// produz os elementos em TreeSet em ordem combinar combinar = set.pollfirst (); System.out.println (Combine.getp1 () + "/t" + Combine.getp2 ());}}}}Saída:
Compare (1,2) e (1,2), retorne 0
Compare (1,2) e (1,2), retorne 0
Compare (1,3) e (1,2), retorne 0
Compare (5,2) e (1,2), retorne 1
1 2
5 2
Vemos que, independentemente de o CompareTo () retornar igual ou não, o método iguals () não é chamado.
Resumir
O exposto acima é sobre a análise de elementos repetitivos do Julgamento de Treeset e exemplos de código. Espero que seja útil para todos. Amigos interessados podem continuar se referindo a outros tópicos relacionados neste site. Se houver alguma falha, deixe uma mensagem para apontá -la. Obrigado amigos pelo seu apoio para este site!