Pregunta: El número de estudiantes de 30 estudiantes en una determinada clase es 20070301-20070330. Todos ellos han tomado cursos de programación de Java y dados las calificaciones de todos los estudiantes (pueden generarse con números aleatorios, con un rango de 60-100). Escriba un programa para imprimir las calificaciones de todos los estudiantes en esta clase en orden de bajo a alto.
Requisitos: Use la lista, mapa y establezca para implementarlo por separado. La información impresa incluye número de estudiante, nombre y calificaciones.
1. Use la recopilación de listas para implementar
import java.util.arrayList; import java.util.collections; importar java.util.comparator; import java.util.iterator; import java.util.linkedlist; import java.util.Treemap; public class test2 {public static void main (String [] args) { / * implementado con ArrayList aquí * * ArrayList <Sentude> AL = New ArrayList <Estudio> (); para (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {al.add (nuevo estudiante (i, (int) (40*math.random ()+60), "estudiante"+j)); } // La clasificación ArrayList se logra mediante el método Sort () en las colecciones. Colección.sort (AL, nuevo sortByGrade ()); para (Student SD: AL) System.out.println (SD); */ LinkedList <deude> lt = new LinkedList <Sudent> (); para (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {lt.add (nuevo estudiante (i, (int) (40*math.random ()+60), "estudiante"+j)); } // Ordenar las colecciones de listas vinculadas.sort (LT, new SortByGrade ()); // Lista vinculada de salida para (Student SD: LT) System.out.println (SD); }} // Student Class Student {int num, grado; Nombre de cadena; // Constructor Public Student (int num, int grado, nombre de cadena) {this.num = num; this.name = name; this.grade = grado; } // public String toString () {// System.out.println ("HI"); return "Número de estudiante:"+this.num+"/t"+"Nombre:"+this.name+""+"puntaje:"+this.grade; }} // Cree una clase de comparación SortByGrade implementa Comparador <deudante> {@Override public int Compare (Student S1, Student S2) {if (S1.grade> S2.Grade) return 1; if (s1.grade <s2.grade) return -1; if (s1.grade == s2.grade) return s1.name.compareto (s2.name); regresar 0; }}El resultado de salida se muestra en la figura:
Resumen del marco de recopilación de listas:
1. La colección de listas es en realidad una matriz dinámica, y los elementos pueden sacarse directamente a través de un bucle for sin iteración.
2. Al emitir una colección de listas, el método ToString () que almacena el objeto en la colección se llamará de forma predeterminada, por lo que debe sobrescribirse en la clase.
Si el método toString () no se anula, debe usarse
for (int i = 0; i <lt.size (); i ++) {estudiante s = lt.get (i); System.out.println ("Número de estudiante:"+S.num+"Nombre:"+S.Name+"Puntuación:"+S.Grade); } 3. La clasificación de colecciones de listas requiere la ayuda de la clase de herramientas de colecciones, es decir, el método Collections.sort (List, New Comparator Class ()). Por lo tanto, debe personalizar una clase de comparación y definir sus propias reglas de comparación.
2. Use la colección de conjuntos para implementar
(1) Use TreeSet para implementar
paquete com.package1; import java.util.*; Public Class Stuscore {public static void main (string [] args) {treeSet <druident> ts = new TreeSet <Estudent> (new Com ()); // Agregar elementos en para (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {ts.add (nuevo estudiante (i, "estudiante"+j, (int) (40*math.random ()+60))); } // bucle iterativo para recuperar Iterator <estudiante> it = ts.Iterator (); while (it.hasnext ()) {estudiante o1 = it.next (); System.out.println ("Número de estudiante:"+O1.num+""+"Nombre:"+o1.name+""+""+"Puntuación:"+o1.grade); }}} // Student Class Student {int num; int grado; Nombre de cadena; estudiante público (int num, nombre de cadena, int grado) {this.num = num; this.name = name; this.grade = grado; }} class com implementa comparador {@Override public int Compare (Object O1, Object O2) {Student S1 = (Student) O1; Estudiante S2 = (Estudiante) O2; if (s1.grade> s2.grade) return 1; if (s1.grade <s2.grade) return -1; if (s1.grade == s2.grade) {return new entero (s1.num) .compareto (nuevo entero (s2.num)); } return 0; }} El resultado de la salida es:
ID de estudiante: 20070307 Nombre: ClassMate 16 Puntuación: 60
ID de estudiante: 20070309 Nombre: Clase Commate 18 Puntuación: 60
ID de estudiante: 20070314 Nombre: Clase Commate 23 Puntuación: 61
ID de estudiante: 20070318 Nombre: clase de clase 27 Puntuación: 61
ID de estudiante: 20070322 Nombre: clase de clase 31 Puntuación: 61
ID de estudiante: 20070306 Nombre: Clase Commate 15 Puntuación: 62
ID de estudiante: 20070310 Nombre: Classmate 19 Puntuación: 64
ID de estudiante: 20070302 Nombre: Clase Commate 11 Puntuación: 66
ID de estudiante: 20070308 Nombre: Clase Commate 17 Puntuación: 68
ID de estudiante: 20070321 Nombre: Clasemate 30 Puntuación: 68
ID de estudiante: 20070330 Nombre: Classmate 39 Puntuación: 69
ID de estudiante: 20070303 Nombre: ClassMate 12 Puntuación: 70
ID de estudiante: 20070320 Nombre: ClassMate 29 Puntuación: 70
ID de estudiante: 20070323 Nombre: ClaseMate 32 Puntuación: 77
ID de estudiante: 20070313 Nombre: clase de clase 22 Puntuación: 78
ID de estudiante: 20070304 Nombre: ClassMate 13 Puntuación: 79
ID de estudiante: 20070324 Nombre: ClassMate 33 Puntuación: 83
ID de estudiante: 20070326 Nombre: ClassMate 35 Puntuación: 84
ID de estudiante: 20070327 Nombre: Clasemate 36 Puntuación: 85
ID de estudiante: 20070311 Nombre: ClassMate 20 Puntuación: 88
Identificación del estudiante: 20070305 Nombre: Clase Matter 14 Puntuación: 89
ID de estudiante: 20070329 Nombre: ClassMate 38 Puntuación: 89
ID de estudiante: 20070316 Nombre: Clasemate 25 Puntuación: 90
ID de estudiante: 20070301 Nombre: Classmate 10 Puntuación: 95
ID de estudiante: 20070312 Nombre: ClaseMate 21 Puntuación: 96
ID de estudiante: 20070317 Nombre: clase de clase 26 Puntuación: 97
ID de estudiante: 20070319 Nombre: Clase Commate 28 Puntuación: 97
ID de estudiante: 20070325 Nombre: ClassMate 34 Puntuación: 98
ID de estudiante: 20070315 Nombre: clase de clase 24 Puntuación: 99
ID de estudiante: 20070328 Nombre: ClassMate 37 Puntuación: 99
Resumen del TreeSet :
1. Los elementos no se pueden repetir y se ordena el árbol de árboles.
2. Dos métodos de clasificación:
(1) Personalizar una clase de comparación, como la clase COM ImplementsComparator {}, implementa el método Compare (Object O1, Object O2) y defina las reglas de comparación en él.
(2) Haga que los elementos mismos sean comparativos.
Pasos: Agregue el elemento en Treeset para implementar la interfaz comparable y anular el método Compareto. Este orden también es el orden natural de los elementos, o el orden predeterminado.
La diferencia entre el método 1 y el método 2:
Los dos métodos tienen sus propias ventajas y desventajas. Es simple de usar comparable. Mientras el objeto que implementa la interfaz comparable se convierte en un objeto comparable, requiere la modificación del código fuente.
La ventaja de usar el comparador es que no requiere modificar el código fuente, sino implementar un comparador. Cuando se necesita comparar un objeto personalizado, pasar el comparador y el objeto juntos puede comparar el tamaño. En comparador, los usuarios pueden implementar una lógica compleja y general por sí mismos, para que puedan coincidir con algunos objetos relativamente simples, lo que puede ahorrar mucho trabajo repetitivo.
(2) Use hashset para implementar
paquete com.package1; import java.util.*; clase pública stuscore {public static void main (string [] args) {hashset <entudent> hs = new Hashset <deude> (); // Agregar elementos en para (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {hs.add (nuevo estudiante (i, "estudiante"+j, (int) (40*math.random ()+60))); } ArrayList <Student> li = new ArrayList (HS); Colección.sort (li, nuevo sortByGrade ()); para (Student SS: Li) System.out.println (SS); }} // Student Class Student {int num; int grado; Nombre de cadena; estudiante público (int num, nombre de cadena, int grado) {this.num = num; this.name = name; this.grade = grado; } public String toString () {//system.out.println("hi "); return "Número de estudiante:"+this.num+"/t"+"nombre:"+this.name+""+"puntaje:"+this.grade; }} class SortByGrade implementa el comparador {@Override public int Compare (Object O1, Object O2) {Student S1 = (Student) O1; Estudiante S2 = (Estudiante) O2; if (s1.grade> s2.grade) return 1; if (s1.grade <s2.grade) return -1; // if (S1.grade == S2.Grade) return 0; }} El resultado de salida es el siguiente:
ID de estudiante: 20070310 Nombre: Clase Matter 19 Puntuación: 60
ID de estudiante: 20070330 Nombre: Classmate 39 Puntuación: 62
ID de estudiante: 20070326 Nombre: ClassMate 35 Puntuación: 63
ID de estudiante: 20070317 Nombre: Clasemate 26 Puntuación: 64
ID de estudiante: 20070318 Nombre: Clase Mommate 27 Puntuación: 65
ID de estudiante: 20070322 Nombre: Clase Commate 31 Puntuación: 65
ID de estudiante: 20070301 Nombre: Classmate 10 Puntuación: 67
ID de estudiante: 20070328 Nombre: ClassMate 37 Puntuación: 68
ID de estudiante: 20070304 Nombre: Classmate 13 Puntuación: 68
ID de estudiante: 20070319 Nombre: Clase Mommate 28 Puntuación: 69
ID de estudiante: 20070313 Nombre: clase de clase 22 Puntuación: 70
ID de estudiante: 20070303 Nombre: ClassMate 12 Puntuación: 71
ID de estudiante: 20070312 Nombre: ClaseMate 21 Puntuación: 71
ID de estudiante: 20070329 Nombre: clase de clase 38 Puntuación: 72
ID de estudiante: 20070306 Nombre: Clase Commate 15 Puntuación: 72
ID de estudiante: 20070324 Nombre: ClassMate 33 Puntuación: 72
ID de estudiante: 20070305 Nombre: ClassMate 14 Puntuación: 75
ID de estudiante: 20070315 Nombre: Clasemate 24 Puntuación: 75
ID de estudiante: 20070314 Nombre: Clase Commate 23 Puntuación: 78
ID de estudiante: 20070307 Nombre: ClassMate 16 Puntuación: 80
ID de estudiante: 20070311 Nombre: Clasemate 20 Puntuación: 81
ID de estudiante: 20070302 Nombre: Clase Commate 11 Puntuación: 83
ID de estudiante: 20070309 Nombre: Clase Commate 18 Puntuación: 84
ID de estudiante: 20070320 Nombre: ClassMate 29 Puntuación: 85
ID de estudiante: 20070321 Nombre: Clasemate 30 Puntuación: 85
ID de estudiante: 20070316 Nombre: Clasemate 25 Puntuación: 86
ID de estudiante: 20070327 Nombre: clase de clase 36 Puntuación: 90
ID de estudiante: 20070308 Nombre: Clase Commate 17 Puntuación: 94
ID de estudiante: 20070323 Nombre: clase de clase 32 Puntuación: 94
ID de estudiante: 20070325 Nombre: ClassMate 34 Puntuación: 95
Resumen del hashset :
1. Los elementos en el hashset no se pueden repetir. Si se agregan repetidamente, solo se mostrará uno.
El principio es el siguiente:
Hashset: la estructura de datos subyacente es una tabla hash. Es una insecuación de hilo. Fuera de sincronización.
2. ¿Cómo garantiza hashset la singularidad de los elementos?
Respuesta: Se realiza a través de dos métodos de elementos, hashcode e iguales.
Si el valor hashcode del elemento es el mismo, se determinará si iguales es verdadero. Si el valor hashcode del elemento es diferente, no se llamará iguales.
3. Ordene el hashset convirtiendo la colección de conjuntos en una colección de listas e implementando la clasificación con la ayuda del método Collections.sort ().
3. Use Treemap para implementarlo
paquete com.package1; importar java.util.comparator; import java.util.iterator; import java.util.set; import java.util.Treemap; public class testTreeMap {public static void main (String [] args) {// 1. Cree una colección Treemap <Student, Integer> tm = new Treemap <Student, Integer> (); para (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {int grado = (int) (40*math.random ()+60); // 2. Agregar elemento tm.put (nuevo estudiante (grado, "estudiante"+j), i); } // 3. atravesar el conjunto y clasificar que se completa el conjunto <deude> k = tm.keySet (); Iterator <deude> it = k.iterator (); while (it.hasnext ()) {estudiante key = it.next (); Entero num = tm.get (clave); System.out.println ("Número de estudiante:"+num+""+"Nombre:"+Key.name+""+"Puntuación:"+Key.grade); }}} La clase Student implementa comparable <estudiante> {int grado; Nombre de cadena; estudiante público (intgrado int, nombre de cadena) {this.grade = grado; this.name = name; } @Override public int Compareto (Student O) {if (this.grade> o.grade) return 1; if (this.grade == O.grade) {// Cuando las calificaciones son las mismas, ordenar por nombre devolver esto.name.compareto (o.name); } return -1; }} El resultado de la salida es:
ID de estudiante: 20070303 Nombre: Clase Commate 12 Puntuación: 61
ID de estudiante: 20070323 Nombre: clase de clase 32 Puntuación: 61
ID de estudiante: 20070317 Nombre: clase de clase 26 Puntuación: 62
ID de estudiante: 20070309 Nombre: Clase Commate 18 Puntuación: 64
ID de estudiante: 20070301 Nombre: Classmate 10 Puntuación: 67
ID de estudiante: 20070304 Nombre: ClassMate 13 Puntuación: 69
ID de estudiante: 20070322 Nombre: Clase Mommate 31 Puntuación: 69
ID de estudiante: 20070328 Nombre: clase de clase 37 Puntuación: 70
ID de estudiante: 20070305 Nombre: Clase Commate 14 Puntuación: 71
ID de estudiante: 20070319 Nombre: clase de clase 28 Puntuación: 73
ID de estudiante: 20070321 Nombre: Clasemate 30 Puntuación: 74
ID de estudiante: 20070310 Nombre: ClassMate 19 Puntuación: 81
ID de estudiante: 20070315 Nombre: Clasemate 24 Puntuación: 82
ID de estudiante: 20070307 Nombre: Clase Commate 16 Puntuación: 84
ID de estudiante: 20070330 Nombre: Classmate 39 Puntuación: 84
ID de estudiante: 20070312 Nombre: ClaseMate 21 Puntuación: 85
ID de estudiante: 20070324 Nombre: ClassMate 33 Puntuación: 87
ID de estudiante: 20070306 Nombre: Clase Commate 15 Puntuación: 88
ID de estudiante: 20070308 Nombre: ClaseMate 17 Puntuación: 90
ID de estudiante: 20070327 Nombre: clase de clase 36 Puntuación: 90
ID de estudiante: 20070318 Nombre: Clasemate 27 Puntuación: 91
ID de estudiante: 20070316 Nombre: Clase Mommate 25 Puntuación: 92
ID de estudiante: 20070320 Nombre: ClassMate 29 Puntuación: 92
ID de estudiante: 20070314 Nombre: Clase Commate 23 Puntuación: 93
ID de estudiante: 20070313 Nombre: clase de clase 22 Puntuación: 94
ID de estudiante: 20070302 Nombre: ClassMate 11 Puntuación: 95
ID de estudiante: 20070325 Nombre: ClassMate 34 Puntuación: 95
ID de estudiante: 20070329 Nombre: ClassMate 38 Puntuación: 97
ID de estudiante: 20070326 Nombre: ClassMate 35 Puntuación: 98
ID de estudiante: 20070311 Nombre: Classmate 20 Puntuación: 99
Resumen de Treemap :
1. Treemap clasifica la clave de forma predeterminada, por lo que puede colocar objetos personalizados en la clave y colocar el número entero que representa el número de alumno en el valor. Al clasificar una clave, puede especificar un atributo en un objeto personalizado para ordenarlo.
2. La colección de mapas utiliza el método PUT () para agregar elementos.
3. El principio de sacar el conjunto de mapas: convertir el conjunto de mapa en un conjunto. Sal a través del iterador. Dos formas de extraer colecciones de mapas:
(1) Establezca <K> KeySet: guarde todas las teclas en el mapa en la colección de conjuntos. Porque el set tiene iteradores. Todas las claves se pueden recuperar de manera iterativa de acuerdo con el método GET. Obtenga el valor correspondiente a cada clave.
(2) establecer <map.Entry <k, v >> Entryset: almacene la relación de mapeo en la colección de mapas en la colección de conjuntos, y el tipo de datos de esta relación es: MAP.Entry
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.