Este artigo descreve as operações de desrepetimento e classificação da matriz implementadas pela Java. Compartilhe -o para sua referência, como segue:
Aqui está uma demonstração de java implementando a deduplicação de matrizes e operações de classificação
O exemplo do código -fonte escrito no artigo é baseado no JDK1.6+, Junit4.8.2
java.util.Arrays.sort()
Suporte classificação int[] , long[] , short[] , char[] , byte[] , float[] , double[] , Object[]
O trecho de código de amostra de referência é o seguinte
// declara a matriz int e inicialize int [] ITARRY = {5,4,7,2,2,0,1,9,3,6,10}; // Classifique a matriz Int Array.sort (INTARRY);Código -fonte da classe de teste de Junit:
pacote com.gjnote.test.array; importar java.util.arrays; importar org.junit.test; public class testarraysSort {// declara a matriz int e inicialize o int [] Intarry = {5,4,7,2,2,0,1,9,6,1,10}; Arrays.sort (INTARRY); para (int i = 0; i <ITARRY.Length; i ++) {System.out.println (INTARRY [i]);} System.out.println (Arrays.toString (Intarry));}}}Saída do console
0
1
2
3
4
5
6
7
8
9
10
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
java.util.Collections.sort()
A comparação de objetos é realizada pela implementação do método compare interna
O trecho de código de amostra é o seguinte
/*** Use colecionários.sort (list, comparator () {});*Método recomendado para classificar as matrizes de listas*/public void collectionsSortElement1 (lista de lista) {collectionS.Sort (list, new Comparator () {@OverridePublic Int Sogare (string o1 O2) {// ajuste a ordem de objeto comparado, de acordo com a realidade, a string o1) {// ajuste a ordem de objeto comparado, de acordo com a realidade, a string o1) {// (O2) .compareto (O1);}});}Java implementos listam a desduplicação
Método 1: Use para travessal de loop para remover elementos duplicados na lista
O trecho de código é o seguinte
Lista Templist = new ArrayList (); // Remova elementos duplicados da lista original para (String String: Originist) {if (! Templist.Contains (String)) {Templist.add (String);}}Método 2: Use definido para desduplicar
O trecho de código é o seguinte
// set usa a singularidade do elemento definido e de desduplicar set = new HashSet (OriginAllist); List Templist = new ArrayList (set);
Método 3: Use o TreeSet para remover elementos duplicados
Treeset TreeSet = New TreeSet (Originallist); listTemplist = new ArrayList (); Templist.addall (Treeset); // TreeSet A classificação padrão é uma ordem ascendente, acrescente se a ordem inversa é necessária de acordo com a situação real. Coleções.Reverse (Templista);
Java implementa o desrepatamento da lista após a classificação
Lista de testes Junit Deduplicação e Classificação de Código
pacote com.gjnote.test.array; importar java.util.ArrayList; importar java.util.Collections; importar java.util.comparator; importar java.util.hashset; import java.util.list; import java.util.etil.et; Org.junit.test;/*** Classe de teste*Lista de elementos descendentes de elemento ** @version 1.0*@author www.gjnote.com **/classe pública testlistarraySort {private listoriginist = newList = newLlist; {OriginAllist.add ("elemento" + i); // Adicione o elemento repetido (i % 2 == 0) {OriginAllist.add ("Element" + i);}}}/*** elemento da lista de saída*@param list*/private void outputList (lista) {para (int i = 0; i <list.size (); {System.out.println (list.get (i));}}/*** use collectionS.sort (list, comparator () {});*Método de classificação recomendado*/private void collectionsSortElement (list list) {start) {System.CurrentTiMillis (); coleções.sort (list) {Comparator () {System.CurrentTimElis (); {// Ajusta a ordem dos objetos compareto de acordo com a classificação real precisa ser retornada o2.compareto (o1);}}); // outputList (templist); system.out.println ("collection.sort:" + (system.currenttimemillis () - start) + "ms");}/*** classificar*/@testpublic void testForloopremovePeatElement () {System.out.println ("TestForloopremovePeatElement"); long start = system.currenttimemillis (); listar Templist = new ArrayList (); // Remover elementos duplicados para (String String: OriginAllist) {if (! Traverse listar e remover elementos duplicados: " + (system.currenttimemillis () - start) +" ms ");}/*** teste para usar o set para desduplicar; * Use collectionS.sort (list, comparator () {}); Classificar **/@testpublic void testSetRemoveEteMement () {System.out.println ("testSetRemoveEatElement"); long start = system.currenttimemillis (); // classificar primeiro (valor teórico: classificar primeiro e depois a desduplicação será mais eficiente do que a classificação posterior) ColeçõesSortElement (Originist); // set usa o sinalizador de sinisting, o conjunto de sindings, o conjunto de deduplicação) e o conjunto de hashs (origin -allist); listar Tente executar o tempo //collectionsSortElement(Templist) ;//OutputList(Templist); void testTreeSeRemovePeatElement () {System.out.println ("testTreeSeRemovePeatElement"); long start = system.currenttimemillis (); treesettreeSet = new TreeSet (originista); listTemplist = new ArrayList (); Templist.addall (Treeset); // TreeSet A classificação padrão é a ordem ascendente, adicione se você precisa reverter a classificação de acordo com a situação real. Coleções.versever (Templista); // outputList (Templist); System.out.println ("Classifique com TreeSet, remova elementos duplicados:" + (System.currenttimemillis () - Start) + "MS");}@testpublic void testmods () {// outputList (original); testSetRemovePeatElement (); // 14mstesttreeSeRemovePeatElement (); // 20ms // testforloopremoverepeatElement (); // 2525ms}}Execute o console testetSetRemovePeatElement () para produzir o resultado
TestSetRemovePeatElement
Coleções.Sort: 8ms
Coleções.
Execute o console de testtreeSeRemovePeatElement () para produzir o resultado
TesttreeSereMeRePeatElement
Classifique com Treeset, remova elementos duplicados: 20ms
Execute o console de teste de alojamento
TestForlooPremoperEPeatElement
Coleções.Sort: 7ms
Use uma lista de loop para atravessar, remova elementos duplicados: 2525ms
PS: Aqui estão algumas ferramentas relacionadas para sua referência:
Ferramenta de remoção online:
http://tools.vevb.com/code/quchong
Ferramenta de repetição de texto online:
http://tools.vevb.com/aideddesign/txt_quchong
Demonstração de animação on -line Inserir/selecionar/Bubble/Merge/Hill/Quick Strating Algorithm Process Fool:
http://tools.vevb.com/aideddesign/paixu_ys
Para obter mais informações sobre os algoritmos Java, os leitores interessados neste site podem visualizar os tópicos: "Estrutura de dados Java e tutorial de algoritmo", "Resumo das dicas de nó da operação Java Dom", "Resumo de dicas de operação de Java e Operação de Java" e "Resumo de Java cache" Tips "TIPS"
Espero que este artigo seja útil para a programação Java de todos.