L'exemple de cet article indique la méthode commune des objets de liste dans Java. Partagez-le pour tout le monde pour votre référence. L'analyse spécifique est la suivante:
Dans la liste de liste détectée dans la base de données, différents champs sont souvent triés. Si vous ne vous demandez pas dans la base de données, le tri directement dans la première liste trouvée améliorera sans aucun doute les performances du système.
Tant que les premiers résultats détectés sont stockés en session, vous pouvez trier la liste. Généralement, le tri de la liste peut être utilisé dans Collection.Sort (liste), mais si la liste contient un objet, cette méthode n'est toujours pas possible. Alors, comment le triez-vous? S'il y a un objet UserInfo, il contient le champ suivant:
Java.Lang.Integer UserId;
Alors maintenant, vous devez trier UserId, vous pouvez utiliser la méthode suivante:
Collection.Sort (list, new Comparator () {public int compare (objet a, objet b) {int one = ((ordre) a) .getUserId (); int deux = ((ordre) b) .getUserId (); Retourner un-deux;}});
De cette façon, si vous souhaitez trier chaque champ de la liste UserInfo, est-il écrit par un segment comme indiqué ci-dessus dans chaque champ? Ce n'est pas le résultat dont nous avons besoin. L'écriture d'un programme est de plus en plus raffinée et vous ne pouvez pas écrire de plus en plus redondant. Pouvez-vous écrire une méthode générale? La réponse est oui, mais tout d'abord, nous devons résoudre les trois questions suivantes:
1 et 1 Peut utiliser le type générique;
2 Étant une méthode de comparaison courante, comme la comparaison;
3 et 3 Existe-t-il une méthode de panoramique comme des méthodes génériques et génériques?
Le premier problème peut être résolu. Le troisième numéro n'a pas de méthode panoramique dont nous avons besoin. Mais pouvons-nous le changer et utiliser les méthodes GetMethod et invoquer pour éliminer dynamiquement les méthodes. Le code est le suivant:
Classe publique SortList <e> {public void Sort (liste <e> liste, méthode de chaîne finale, Sorme de chaîne finale) {CollectionS.Sort (List, New Comparator () {public int compare (O. Bky A, objet b) { int ret = 0; essayez {méthode m1 = (e) a) .getClass (). égal (tri) // l'inversé (((((e) b), null) .tring (). compareto ((e) a), null) .tring ()); else // ordre positif ret rat = m1.invoke (((e) a), null) .tring (). compareto (m2.invoke ((e) b), null) .tring ();} catch (NosuchMethodexception ne) {System.out. println (ne);} catch (illégalaccessException ie) {System.out.println (ie); ATIntargetException) {System.out.println (it);} return ret;}});}}
En regardant le code ci-dessus, avons-nous réussi à résoudre les trois problèmes ci-dessus et à ajouter l'ordre de la hausse. Il n'y a pas d'objets et de types spécifiques dans le code, et il est déjà polyvalent. : par exemple, "par exemple" getUserId ". Vous pouvez utiliser le code fourni ci-dessous pour tester:
//Test.javapackage Test; = new ArrayList <UserInfo> (); 11)); List.Add (New UserInfo (1, "C", Formterrer.Parse ("" 1980-10-01 "), 30); (" 1973-10-01 "), 11)); Système. out.println ("------- La séquence originale ----------------------------------- ----------------------- "" ""); Free (UserInfo User: List) {System.out.println (user.toString ()); } // appelle la classe universelle sortlist <userInfo> sortList = new sortList <UserInfo> (); ---------------------------------------- "); pour (UserInfo User: List) {System.out.println (user.toString ());} // Appuyez sur le nom d'utilisateur SortList.sort (liste, "GetUsername", NULL); -------------------------------------------------- -------------------------------------------------- --- "););} // sortList.sort (liste," getBithDatestr ", null); System.out.println (" ------------------- ------------- -------------------------- "); pour (UserInfo User: List) { System.out.println (user.toString ());}}}
Les résultats des tests sont les suivants:
------- Séquence originale ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- ------------------------------ 3; B; 10-01; 302; 3 B; ---------- 2; -------------------------------------------------- -------------------------------------------------- ------------------------------- -------- 2; -01; 111;
Remarque: Le tri de la date est d'abord transformé par le format, sinon il n'y aura pas de résultat correct.
On espère que cet article est utile à la conception du programme Java de tous.