1. Problema
1. Como os métodos de hashset, TreeSet usam HashCode () e Equal ()
2. Quando e por que os objetos em Treemap e Treeset implementam interface comparável?
2. Resposta:
1. O hashset é implementado através do hashmap, o TreeSet é implementado através do Treemap, mas o conjunto usa apenas a chave do mapa.
2. A chave e o conjunto de mapa têm um recurso comum, que é a singularidade do conjunto. Treemap tem um pedido adicional.
3. HashCode e igual () são usados para hashmap. Como não há necessidade de classificar, você só precisa prestar atenção ao posicionamento e singularidade.
A.HashCode é usado para calcular o valor do hash e o valor do hash é usado para determinar o índice da tabela de hash.
b. Um índice na tabela de hash armazena uma lista vinculada; portanto, você deve percorrer o método igual para comparar cada objeto na cadeia antes de poder realmente localizar a entrada correspondente ao valor da chave.
Quando c.put, se a tabela de hash não estiver localizada, adicione uma entrada antes da lista vinculada. Se estiver localizado, substitua o valor na entrada e retorne o valor antigo.
d. Ao substituir o hashcode () e igual () da chave, tenha cuidado para não associá -los a propriedades mutáveis. Caso contrário, após a mudança da propriedade, o HashCode mudará e igual também será falso, para que não seja encontrado no mapa. Além disso, esse objeto não pode ser liberado porque não pode ser encontrado, o que se tornará uma referência inválida (equivalente a um vazamento de memória).
4. Como o Treemap requer classificação, é necessário um comparador para comparar o tamanho do valor da chave. Obviamente, também está posicionado usando o comparador.
a.ComParator pode ser especificado ao criar o Treemap e depois usar o comparator.comPare ao classificar
b. Se o comparador não for especificado durante a criação, o método key.compareto () será usado, o que requer a chave para implementar a interface comparável.
C.Treemap é implementado usando a estrutura de dados de árvores, portanto, o posicionamento pode ser concluído usando a interface de comparação.
importar java.util.hashset; importar java.util.iterator; public class WpsklhashSet {// Uso do conjunto em java (não são permitidos objetos duplicados): public static void main (string [] args) {hashset hashset = new hashset (); string a = new ("a" a "a") {hashset = new Hashset (); String ("b"); hashset.add (a); hashset.add (b); system.out.println (hashset.size ()); string cz = hashset.add (c)? "Este objeto não existe": "já existe"; system.out.println ("teste se um objeto pode ser adicionado"+cz); system.out.println (hashset.isempty ()); // teste se um objeto já está contido no system.out.println (hashset.oTain ("A");); while (ir.hasnext ()) {System.out.println (ir.next ());} // teste se um objeto pode excluir System.out.println (hashset.remove ("a")); system.out.println (hashSet.remove ("a")); // depois de testar, se você quer que seja, se você não deve usar, se você não é o que você deve usar o que você não deve usar o que você não deve usar o que você não deve usar o que você não deve usar o que você não deve usar o que você não deve usar o que você não. ir = hashset.iterator (); while(ir.hasNext()){System.out.println(ir.next());}}}/*** Through this program, you can also test the disorder of the added elements of the tree set and the order of the output */import java.util.TreeSet;import java.util.Iterator;public class TreeSetTest{public static void main(String[] args){TreeSet tree = new TreeSet (); Tree.Add ("China"); Tree.add ("America"); Tree.add ("Japão"); Tree.add ("Chinese"); iterator iter = Tree.iterator (); while (iter.hasnext ()) {System.out.println (iter.next ());}}}Além disso, estou ativando outras diferenças (graças ao meu amigo Andygulin que "Baidu sabe"):
1. TreeSet é implementado por uma árvore de duas diferenças. Os dados no TreeSet são classificados automaticamente e os valores nulos não são permitidos.
2. O hashset é implementado por uma tabela de hash. Os dados no hashset não são ordenados. Você pode colocar nulo, mas só pode colocar um nulo. Os valores em ambos não podem ser repetidos, assim como a restrição exclusiva no banco de dados.
3. Hashset exige que o objeto colocado deva implementar o método hashcode (). O objeto colocado está marcado com o código HashCode, e o objeto HashCode com o mesmo conteúdo possui o mesmo hashcode, para que o conteúdo colocado não possa ser repetido. Mas objetos da mesma classe podem ser colocados em diferentes casos.
Resumir
O exposto acima é todo o conteúdo deste artigo sobre a diferença entre os métodos de uso de hashset e Treeset, e 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!