Cet article décrit les opérations de dérépation et de tri de la table implémentées par Java. Partagez-le pour votre référence, comme suit:
Voici une démonstration de Java implémentant les opérations de déduplication et de tri du tableau
L'exemple de code source écrit dans l'article est basé sur JDK1.6 +, JUnit4.8.2
java.util.Arrays.sort()
Support tri int[] , long[] , short[] , char[] , byte[] , float[] , double[] , Object[]
L'extrait de code de référence est le suivant
// Déclarez le tableau int et initialise int [] intarry = {5,4,7,8,2,0,1,9,3,6,10}; // trier les arrays intres.sort (intarry);Code source de la classe de test JUnit:
package com.gjnote.test.array; import java.util.arrays; import org.junit.test; classe publique TestArraysSort {// Déclare le tableau int et initialise le int [] intarry = {5,4,7,8,2,0,1,9,3,6,10}; @ testPublic Void test () {// TRA Arrays.sort (intarry); for (int i = 0; i <intarry.length; i ++) {System.out.println (intarry [i]);} system.out.println (arrays.tostring (intarry));}}Sortie de la 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()
La comparaison des objets est réalisée en mettant en œuvre la méthode compare interne
L'exemple d'extrait de code est le suivant
/ *** Utiliser Collection.Sort (List, Comparator () {}); * Méthode recommandée pour trier les tableaux de liste * / public void CollectionSortElement1 (list list) {Collections.Sort (list, new Comparator () {@OverRidePublic int compare (string o1, string o2) {// ajuster l'ordre des objets comparables selon le triage réel nécessite les besoins (O2) .Compareto (O1);}});}Java implémente la liste de déduplication
Méthode 1: Utiliser pour la traversée de boucle pour supprimer les éléments en double dans la liste
L'extrait de code est le suivant
List templist = new ArrayList (); // supprimer les éléments en double de la liste originale pour (String String: OriginalList) {if (! Templist.contains (string)) {templist.add (string);}}Méthode 2: Utilisez le jeu pour déduir
L'extrait de code est le suivant
// SET utilise l'unicité de l'élément set et set set deduplicate Set = new HashSet (OriginalList); list templist = new ArrayList (set);
Méthode 3: Utilisez Treeset pour éliminer les éléments en double
Treeset Treeset = new Treeset (OriginalList); listTemplist = new ArrayList (); templist.addall (arreset); // arreset Le tri par défaut est l'ordre croissant, ajoutez si l'ordre inverse est requis en fonction de la situation réelle. Collection.Reverse (Templist);
Java met en œuvre le dérépation de la liste après le tri
Junit Test List Deduplication and Tri Tri Code Source
package com.gjnote.test.array; import java.util.arraylist; import java.util.collections; import java.util.comparator; import java.util.hashset; import java.util.list; import java.util.set; import java.util.treeset; importit org.junit.before; Classe de test * Liste Array De-HEAVY Élément Sort ** @version 1.0 * @author www.gjnote.com ** / classe publique TestListArraySort {private listoriginallist = null; @beforepublic void setup () lance exception {originallist = new ArrayList (); pour (int i = 10000; i> 0; i--) {originALList.add ("élément" + i); répéter elementIf (i% 2 == 0) {originallist.add ("element" + i);}}} / *** élément de liste de sortie * @param list * / private void outputlist (list list) {for (int i = 0; i <list.size (); i ++) {system.out.println (list.get (i));}} / *** utilise la collection.Sort (list,, list, Comparator () {}); * Méthode de tri recommandée * / private void CollectionSSortElement (list list) {long start = System.Currenttimemillis (); Collection.Sort (list, new comparateur () {@OverridePublic int compare (String o1, string o2) o2.compareto (o1);}}); // outputlist (templist); System.out.println ("Collection.Sort:" + (System.currenttimemillis () - Démarrer) + "MS");} / *** Test TestPublic Void Treversal pour les éléments duplate {System.out.println ("TestForLoPreMoveRePeAlement"); Long start = System.currentTimemillis (); list templist = new ArrayList (); // supprimer des éléments en double pour (String String: OriginalList) {if (! templist.contains (string)) {templist.add (String);}} // tri CollectionsSortElement (templist); // outputlist); Liste et supprimer des éléments en double: "+ (System.CurrentTimeMillis () - Démarrer) +" MS ");} / *** Test to Utiliser Set To Deduplicate; * Utiliser Collection.Sort (List, Comparator () {}); Tri ** / @ TestPublic void TestSetReMoverePeateLement () {System.out.println ("TestSetRemOverEPEATElement"); Long start = System.CurrentTimemillis (); // Trier d'abord (Valeur théorique: Tri d'abord, puis la déduplication sera plus efficace que le tri plus tard) CollectionsSortElement (OriginalList); // Set utilise l'unicité des éléments définis, la déducteur set set Set = New Hashset (OriginalList); List TEMPLIST = NEW ARRAYLIST (Set); // After Sorting, vous pouvez comment faire un tri, TRACLING = TRACH Essayez du temps d'exécution //CollectionSortElement(TempList) ;//outputList(TempList);System.out.println("Collections.sort Sort, utilisez le jeu pour dédupliquer: "+ (System.Currenttimemillis () - Démarrer) +" MS ");} / *** Tester Utiliser Treeset pour supprimer les éléments en dupliqués * Tri par défaut ou collections. TestTreeTeTreMoverePeatement () {System.out.println ("TestTreeTetreMoverePeatement"); Long start = System.Currenttimemillis (); TreeSettretReSet = new Treeset (OriginalList); listTemplist = new ArrayList (); templist.addall (arreset); // arreset Le tri par défaut est l'ordre croissant, ajoutez si vous devez inverser la tri selon la situation réelle. Collection.Reverse (Templist); // outputlist (templist); System.out.println ("Trier avec Treeset, supprimer les éléments en double:" + (System.Currenttimemillis () - start) + "MS");} @ testpublic void testMethods () {// outputListlist); // lister la méthode recommandée pour Dedudugation TessetStEt. 14MSTESTTREETETREMOVEREPEATELlement (); // 20ms // TestForLoPreMoveRePeatement (); // 2525ms}}Exécutez TestSetReMoverePeAtElement () Console pour produire le résultat
TestSetRemOverePeatement
Collection.Sort: 8 ms
Collection.Sort Sort, utilisez Set to Deduplicate: 14ms
Exécutez TestTreeTeTreMoverePeatement () Console pour produire le résultat
TestTreseTremOverePeatement
Trier avec Treeset, retirer les éléments en double: 20 ms
Exécutez TestForLoPreMoverePeatement () Console pour produire le résultat
TestForloopreMoverePeatement
Collection.Sort: 7ms
Utilisez une liste de boucle pour traverser, supprimez les éléments en double: 2525 ms
PS: Voici quelques outils connexes pour votre référence:
Outil de suppression en ligne:
http://tools.vevb.com/code/quchong
Outil de répétition de texte en ligne:
http://tools.vevb.com/aideddesign/txt_quchong
Animation en ligne INSERT INSERT / SELECT / Bubble / Merge / Hill / Quick Tri Algorithme Process Toolet:
http://tools.vevb.com/aideddesign/paixu_ys
Pour plus d'informations sur les algorithmes Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Structure de données Java et tutoriel d'algorithme", "Résumé des conseils de nœud de Dom Operation Java", "Résumé du fichier Java et des conseils d'opération de répertoire" et "Résumé des conseils d'opération Java Cache"
J'espère que cet article sera utile à la programmation Java de tous.