Hi men!!!
cara primeiramente vc deve ter perdido um boa tempo pra escrever tanto e tão didaticamente bem. A mais de 48 hs to travado esperando um ajuda assim. Então irmao valeu mesmo. really thank’s :thumbup:
bom, clareou legal, agora só mais umas confirmações eu eu matei essa rsss…(coloquei junto a teus coments)
renamed:
Oi
O TreeSet faz algum tipo de ordenação nos elementos inseridos na árvore (se não me engano, na inserção).
Esse Comparator que você passou é a forma que você ensina ao TreeMap como comparar os elementos que você está inserindo.
Por exemplo, digamos que você tenha a classe Pessoa.
class Pessoa {
private String nome;
private int idade;
}
1.Como o TreeSet saberá qual forma ele deve usar para comparar os elementos? Pelo nome, pela idade ou por ambos?
Por padrão, o TreeSet compara pelo endereço de memória. Ou seja, duas pessoas com o mesmo nome e mesma idades são diferentes para o TreeSet. Quando você passa esse comparator no construtor, você ensina ao TreeSet qual a forma que ele deve comparar esses objetos. Existe outra forma, que é implementando a interface Comparable na sua classe (não confunda Comparable com Comparator). Uma ótima explicação está aqui http://www.guj.com.br/java/54036-comparator#284273.
-quer dizer então sempre que eu usar TreeSet (filha de TreeMap acho) eu tenho de me lembrar de que ordem vai ser feita por end de memoria ou se me esquecer disso e achar q eles vao entrar no conjunto pela ordem de inserção poderei ter problemas inesperados mais tarde, nas consultas por ex, então sempre terei de usar um Comparator e ainda por cima implementar um metodo compare(obj1, obj2); correto?
2.O seu método compare deve retornar zero caso os dois valores informados forem iguais (por exemplo, duas pessoas com o mesmo nome), menor que zero se o primeiro valor for menor do que o segundo (nesse caso, se alfabeticamente o nome da primeira pessoa vier antes da segunda) e maior que zero se o primeiro valor for maior do que o segundo (nesse caso, se alfabeticamente o nome da primeira pessoa vier depois da segunda).
-quer dizer então que para o TreeSet formar o conj, antes o metodo copare(obj1, obj2); ordena e para tanto, se cada email equivale uma linha no arquivo.txt, quer dizer que ele le e armazena 2 linhas (dois emails ao mesmo tempo) pra efetuar a compração ou o TreeSet adiciona os dois objetos no conj. e o metodo compare(obj1, obj2); faz a ordenação após ja estarem contidos? achei isso meio confuso e nem sei se estou certo quanto ao que disse. (tb nao sei se isso é relevantes saber)
3-Por fim, String é uma classe da API do Java e ele tem uma forma de comparação entre duas Strings. O método compareToIgnoreCase compara duas Strings sem levar em consideração letras maísculas e minúsculas.
resumindo então /usei TreeSet/Tive de usar Comparator pra não ter ordenação padrão do TreeSet/Como usei Comparator fui obrigado a implementar o metodo compare(obj1, obj2); pra instruir o Comparator como seria feira a ordenação/Ja q estava comparando strings usei o String1.compareToIgnoreCase (String2) pra finalizar implementação do metodo compare(obj1, obj2); - falei certo ?
Portanto, esse Set de emails os ordena alfabeticamente por email.
ufss… demorei qse 1 hora pra formular minhas perguntas …mas to a um passito de entender tudo!
Ultima pergunta: Na formação de um desenvolvedor java a parte mais difici é a correta compreensão da pratica de O.O. ou o mais dificil ainda está por vir ?
mais uma vez obrigado pela ajuda brou!