El ejemplo de este artículo indica el método común de los objetos de lista en Java. Compártelo para todos para su referencia. El análisis específico es el siguiente:
En la lista detectada en la base de datos, a menudo se clasifican diferentes campos. Si no se consulta en la base de datos, la clasificación directamente en la primera lista encontrada mejorará sin duda el rendimiento del sistema.
Mientras los primeros resultados detectados se almacenen en la sesión, puede ordenar la lista. En general, la clasificación de la lista se puede usar en colección.sort (lista), pero si la lista contiene un objeto, este método aún no es posible. Entonces, ¿cómo lo clasificas? Si hay un objeto UserInfo, contiene el siguiente campo:
Java.lang.integer Userid;
Por lo tanto, ahora debe clasificar el INSODERID, puede usar el siguiente método:
Collections.sort (list, new Comparator () {public int Compare (Object A, Object B) {int One = ((Order) A) .GetUserId (); int two = ((Order) b) .getUserId (); Return One-Two;}});
De esta manera, si desea ordenar cada campo de la lista de userInfo, ¿está escrito por un segmento como se muestra arriba en cada campo? Ese no es el resultado que necesitamos. Escribir un programa es cada vez más refinado, y no puede escribir cada vez más redundante. ¿Puedes escribir un método general? La respuesta es sí, pero antes que nada, debemos resolver las siguientes tres preguntas:
1. Puede usar el tipo genérico;
2. Ser un método de comparación común, como Compareto;
3. ¿Existe un método de vía pan como los métodos genéricos y genéricos?
El primer problema se puede resolver. El tercer problema no tiene el método Pan -Way que necesitamos. Pero podemos cambiarlo y usar los métodos GetMethod e Invocar para eliminar dinámicamente métodos. El código es el siguiente:
Public Class SortList <E> {public void sort (List <E> List, Final String Method, Final String Sort) {Collections.sort (List, New Comparator () {public int Compare (O. Bky A, Object B) { int = 0; iguales (sort) // el invertido ((((((e) b), nulo) .tring (). Compareto ((((e) a), nulo) .tring ()); else // orden positivo ret = m1.invoke ((((e) a), nulo) .tring (). comparación (m2.invoke ((e) b), nulo) .tring ();} catch (nosuchmethodexception ne) {System.out. println (ne);} catch (ilegalAccessException IE) {System.out.println (es decir);
Mirando el código anterior, resolvimos con éxito los tres problemas anteriores y agregamos el orden al alza. No hay objetos y tipos específicos en el código, y ya es versátil. : Por ejemplo, "por ejemplo" getUserid ". Puede usar el código que se proporciona a continuación para probar:
//Test.javapackage test; = new ArrayList <SereurInfo> (); 11)); out.println ("------- La secuencia original ------------------------------------- ----------------------- "" ""); } // Llame a la Clase Universal SortList <SererInfo> SortList = New SortList <SerEdFo> (); ---------------------------------------- "); para (UserInfo User: List) {System.out.println (user.ToString ());} // Presione UserName sortList.sort (List, "GetUsername", NULL); -------------------------------------------------- -------------------------------------------------- --- "););} // sortList.sort (lista," getBithDatestr ", null); system.out.println (" ------------------- ------------- -------------------------- "); para (UserInfo User: List) { system.out.println (user.toString ());}}}
Los resultados de la prueba son los siguientes:
------- secuencia original ----------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------- 3; 10-01 302; 3 de 1980-12-01; --------- 2 -------------------------------------------------- -------------------------------------------------- ------------------------------- -------- 2; -01 111;
Nota: La clasificación de la fecha se transforma primero por el formato, de lo contrario no habrá resultado correcto.
Se espera que este artículo sea útil para el diseño del programa Java de todos.