Aqui discutimos a classificação de lista, conjunto e mapa, incluindo a classificação pelo valor do mapa.
1) Liste a classificação
A classificação da lista pode usar diretamente o método de coleções de classificação ou o método de matrizes de classificação. Na análise final, as coleções são chamar o método de matrizes de classificação.
public static <t> void Sort (lista <t> Lista, comparador <? super t> c) {object [] a = list.toarray (); Arrays.sort (a, (comparador) c); Listiterator i = list.ListIterator (); for (int j = 0; j <A.Length; j ++) {i.next (); i.set (a [j]); }}Se for um objeto personalizado, você precisa implementar a interface comparável para que o próprio objeto tenha a função de "comparar". Obviamente, também podemos usar o comparador externamente para especificar sua classificação.
Por exemplo:
pacote com.fox; /** * @author huangfox * @desc */public class User implementa comparável <suário> {nome da string privada; private Int Age; public user () {} public user (nome da string, int age) {super (); this.name = nome; this.age = idade; } @Override public string tostring () {return "nome:" + nome + ", idade:" + idade; } public string getName () {return name; } public void setName (nome da string) {this.name = name; } public int getage () {Age de retorno; } public void setage (int Age) {this.age = Age; } @Override public int compare (Usuário o) {if (o.age <this.age) retornar 1; caso contrário, se (o.age> this.age) retorna -1; caso contrário, retorne 0; } / ** * @param args * / public static void main (string [] args) {user u1 = novo usuário ("Fox", 11); Usuário u2 = novo usuário ("Fox2", 21); System.out.println (u2.comPareto (U1)); }}Ordenar por:
// list <suser> u = new ArrayList <suser> (); List <suser> u = new LinkedList <suser> (); us.add (novo usuário ("f5", 12)); us.add (novo usuário ("f2", 22)); us.add (novo usuário ("f3", 2)); us.add (novo usuário ("F4", 14)); us.add (novo usuário ("f5", 32)); us.add (novo usuário ("F4", 12)); us.add (novo usuário ("F7", 17)); us.add (novo usuário ("F8", 52)); System.out.println (US.ToString ()); longo bt = system.nanotime (); Coleções.sort (EUA, novo comparador <suser> () {@Override public Int compare (usuário o1, usuário o2) {if (o1.getage () <o2.getage ()) retornar -1; else if (o1.getage ()> o2.getage ()) retornar 1; retornar o1.getName (). long ET = System.Nanotime (); System.out.println (et - BT); System.out.println (US.ToString ());Claro, aqui você pode coletar e classificar diretamente (nós). O comparador é usado para otimizar o próprio método de comparação do usuário (classificando pessoas da mesma idade de acordo com o nome de usuário e a sequência de classificação).
Para mencionar simplesmente, a classificação de matrizes usa classificação de inserção e classificação de mesclagem, e a classificação de inserção diretamente quando o comprimento da matriz é pequeno.
2) Defina o tipo
O conjunto inclui Hashset e Treeset. O hashset é baseado no hashmap e no árido é baseado no Treemap.
O TREEMAP é implementado usando árvores vermelhas e pretas e naturalmente possui função de classificação. "Naturalmente tem função de classificação" significa que possui iteradores em ordem ascendente e descendente.
Então, como você classifica o hashset? Podemos converter o hashset em uma lista e classificá -lo com a lista.
Por exemplo:
SET <usery> US = new HashSet <suser> (); // SET <suário> US = new TreeSet <suser> (); // SET <usery> nós = new TreeSet <suser> (novo comparador <suser> () {// // @override // public int compare (usuário o1, usuário o2) {// if (o1.getage () <o2.getage ()) // retorna -1; // sen if (o1.getage ()> o2.getage ()) // retornar -1; o1.getName (). Compareto (o2.getName ()); us.add (novo usuário ("f5", 12)); us.add (novo usuário ("f2", 22)); us.add (novo usuário ("f3", 2)); us.add (novo usuário ("F4", 14)); us.add (novo usuário ("f5", 32)); us.add (novo usuário ("F4", 12)); us.add (novo usuário ("F7", 17)); us.add (novo usuário ("F8", 52)); // SET -> Lista de Array <suser> List = new ArrayList <suser> (US); System.out.println (list); Coleções.Sort (Lista); System.out.println (list);Você também pode converter o hashset em uma matriz e classificá -lo com matrizes.
3) Classificação do mapa
O mapa inclui Hashmap e Treemap. Como mencionado acima, o TREEMAP é implementado com árvores vermelhas e negras e naturalmente possui funções de classificação.
Então, como você classifica o hashmap por "chave"? O método é muito simples, use o hashmap para construir um TreeMap.
Mapa <string, número inteiro> us = new hashmap <string, inteiro> (); // mapa <string, número inteiro> us = new Treemap <string, Integer> (); us.put ("F1", 12); us.put ("f2", 13); us.put ("F5", 22); us.put ("F4", 42); us.put ("F3", 15); us.put ("F8", 21); us.put ("F6", 123); us.put ("f7", 1); us.put ("F9", 19); System.out.println (US.ToString ()); System.out.println (novo Treemap <String, Integer> (US));Como classificar por "valor"?
// classificar por conjunto de valor <entrada <string, número inteiro >> ks = us.entrySet (); Lista <Entrada <String, Integer>> List = new ArrayList <pap.entry <String, Integer>> (KS); Coleções.sort (Lista, novo comparador <Entrada <String, Integer >> () {@Override public Int (Entry <String, Integer> O1, Entry <String, Integer> O2) {if (o1.getValue () <o2.getValue ()) retornar -1; outros if (o1.getValue () O2, System.out.println (list);Propor a entrada do mapa em uma estrutura definida, converta o conjunto em uma lista e finalmente classifique -a de acordo com a lista.
A breve discussão acima sobre a questão da classificação na coleção Java é todo o conteúdo que compartilho com você. Espero que você possa lhe dar uma referência e espero que você possa apoiar mais o wulin.com.