Pergunta: O número do aluno de 30 alunos em uma determinada turma é 20070301-20070330. Todos eles fizeram cursos de programação Java e receberam as notas de todos os alunos (podem ser gerados por números aleatórios, com um intervalo de 60-100). Escreva um programa para imprimir as notas de todos os alunos desta classe em ordem de baixa a alta.
Requisitos: Use a lista, mapa e defina para implementá -la separadamente. As informações impressas incluem número, nome e notas do aluno.
1. Use a coleção de listas para implementar
importar java.util.arraylist; importar java.util.Collections; importar java.util.comparator; importar java.util.iterator; importar java.util.LinkedList; importar java.util.treemap; classe pública Test2 {public static void main (string [] args) { / * implementado com o ArrayList aqui * * ArrayList <Dentulge> al = new ArrayList <ver -se> (); para (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {al.add (novo aluno (i, (int) (40*math.random ()+60), "aluno"+j)); } // A classificação do ArrayList é alcançada pelo método Sort () em coleções. Coleções.sort (AL, new SortByGrade ()); para (Student SD: AL) System.out.println (SD); */ LinkedList <ver -se> lt = new LinkedList <ver -se> (); para (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {lt.add (novo aluno (i, (int) (40*math.random ()+60), "aluno"+j)); } // Classifique a lista de listas vinculadas.Sort (LT, new SortByGrade ()); // Lista vinculada de saída para (Student SD: LT) System.out.println (SD); }} // Student Class Student {int num, grau; Nome da string; // construtor public Student (int num, int grau, nome da string) {this.num = num; this.name = nome; this.Grade = GRADE; } // public string tostring () {// System.out.println ("Hi"); Retorne "Número do aluno:"+this.num+"/t"+"nome:"+this.name+""+"escore:"+this.grade; }} // Crie uma classe comparadora SortByGrade implementa o comparador <very Student> {@Override public Int (Student S1, Student S2) {if (s1.grade> s2.grade) retornar 1; if (s1.grade <s2.grade) retorna -1; if (S1.Grade == S2.Grade) retorna S1.name.compareto (s2.name); retornar 0; }}O resultado da saída é mostrado na figura:
Resumo da estrutura de coleta de listas:
1. A coleção de listas é na verdade uma matriz dinâmica, e os elementos podem ser retirados diretamente através de um loop for sem iteração.
2. Ao produzir uma coleção de listas, o método ToString () que armazena o objeto na coleção será chamado por padrão, por isso precisa ser substituído na classe.
Se o método tostring () não for substituído, ele deve ser usado
for (int i = 0; i <lt.size (); i ++) {aluno s = lt.get (i); System.out.println ("Número do aluno:"+s.num+"nome:"+s.name+"escore:"+s.grade); } 3. A classificação das coleções de listas requer a ajuda da classe de ferramentas de coleções, ou seja, o método Coleções.Sort (List, New Comparator Class ()). Portanto, você precisa personalizar uma classe comparadora e definir suas próprias regras de comparação.
2. Use a coleção de conjuntos para implementar
(1) Use o TreeSet para implementar
pacote com.package1; importar java.util.*; classe pública Stuscore {public static void main (string [] args) {TreeSet <estudante> ts = new TreeSet <ver -se> (new com ()); // Adicione elementos em (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {ts.add (novo aluno (i, "aluno"+j, (int) (40*math.random ()+60)); } // loop iterativo para recuperar o iterador <estudante> it = ts.iterator (); while (it.hasNext ()) {Student o1 = it.Next (); System.out.println ("Número do aluno:"+o1.num+"" "Nome": "+o1.name+" "+" ""+"escore:"+o1.grade); }}} // Classe estudantil aluno {int num; grau int; Nome da string; public Student (int num, nome da string, Int Grade) {this.num = num; this.name = nome; this.Grade = GRADE; }} classe COM implementa o comparador {@Override public Int (objeto O1, objeto O2) {Student S1 = (Student) O1; Aluno s2 = (aluno) O2; if (s1.grade> s2.grade) retornar 1; if (s1.grade <s2.grade) retorna -1; if (S1.Grade == S2.Grade) {retorna new Integer (s1.num) .compareto (novo número inteiro (s2.num)); } retornar 0; }} O resultado da saída é:
ID do aluno: 20070307 Nome: ClassMate 16 Pontuação: 60
ID do aluno: 20070309 Nome: ClassMate 18 Pontuação: 60
ID do aluno: 20070314 Nome: ClassMate 23 Pontuação: 61
ID do aluno: 20070318 Nome: ClassMate 27 Pontuação: 61
ID do aluno: 20070322 Nome: ClassMate 31 Pontuação: 61
ID do aluno: 20070306 Nome: ClassMate 15 Pontuação: 62
ID do aluno: 20070310 Nome: ClassMate 19 Pontuação: 64
ID do aluno: 20070302 Nome: ClassMate 11 Pontuação: 66
ID do aluno: 20070308 Nome: ClassMate 17 Pontuação: 68
ID do aluno: 20070321 Nome: ClassMate 30 Pontuação: 68
ID do aluno: 20070330 Nome: ClassMate 39 Pontuação: 69
ID do aluno: 20070303 Nome: ClassMate 12 Pontuação: 70
ID do aluno: 20070320 Nome: ClassMate 29 Pontuação: 70
ID do aluno: 20070323 Nome: ClassMate 32 Pontuação: 77
ID do aluno: 20070313 Nome: ClassMate 22 Pontuação: 78
ID do aluno: 20070304 Nome: ClassMate 13 Pontuação: 79
ID do aluno: 20070324 Nome: ClassMate 33 Pontuação: 83
ID do aluno: 20070326 Nome: ClassMate 35 Pontuação: 84
ID do aluno: 20070327 Nome: ClassMate 36 Pontuação: 85
ID do aluno: 20070311 Nome: ClassMate 20 Pontuação: 88
ID do aluno: 20070305 Nome: ClassMate 14 Pontuação: 89
ID do aluno: 20070329 Nome: ClassMate 38 Pontuação: 89
ID do aluno: 20070316 Nome: ClassMate 25 Pontuação: 90
ID do aluno: 20070301 Nome: ClassMate 10 Pontuação: 95
ID do aluno: 20070312 Nome: ClassMate 21 Pontuação: 96
ID do aluno: 20070317 Nome: ClassMate 26 Pontuação: 97
ID do aluno: 20070319 Nome: ClassMate 28 Pontuação: 97
ID do aluno: 20070325 Nome: ClassMate 34 Pontuação: 98
ID do aluno: 20070315 Nome: ClassMate 24 Pontuação: 99
ID do aluno: 20070328 Nome: ClassMate 37 Pontuação: 99
Resumo de Treeset :
1. Os elementos não podem ser repetidos e a TreeSet é ordenada.
2. Dois métodos de classificação:
(1) Personalize uma classe de comparador, como a classe COM ImplementsComparator {}, implemente o método Compare (objeto O1, Objeto O2) e defina as regras de comparação nele.
(2) Torne os próprios elementos comparativos.
Etapas: Adicione o elemento no TreeSet para implementar a interface comparável e substituir o método compareto. Esta ordem também é a ordem natural dos elementos, ou a ordem padrão.
A diferença entre o método 1 e o método 2:
Os dois métodos têm suas próprias vantagens e desvantagens. É simples usar comparável. Enquanto o objeto que implementa a interface comparável se tornar um objeto comparável, requer modificação do código -fonte.
A vantagem de usar o comparador é que ele não requer modificar o código -fonte, mas implementar um comparador. Quando um objeto personalizado precisa ser comparado, passar o comparador e o objeto juntos pode comparar o tamanho. No comparador, os usuários podem implementar a lógica complexa e geral por si só, para que possam corresponder a alguns objetos relativamente simples, o que pode economizar muito trabalho repetitivo.
(2) Use o hashset para implementar
pacote com.package1; importar java.util.*; classe pública Stuscore {public static void main (string [] args) {hashset <very student> hs = new Hashset <vertware> (); // Adicione elementos em (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {hs.add (novo aluno (i, "aluno"+j, (int) (40*math.random ()+60)); } ArrayList <very Student> li = new ArrayList (HS); Coleções.sort (li, new SortbyGrade ()); para (Student SS: LI) System.out.println (SS); }} // Student Class Student {int num; grau int; Nome da string; public Student (int num, nome da string, Int Grade) {this.num = num; this.name = nome; this.Grade = GRADE; } public string tostring () {//system.out.println("hi "); Retorne "Número do aluno:"+this.num+"/t"+"nome:"+this.name+""+"escore:"+this.grade; }} classe SortBygrade implementa o comparador {@Override public Int Compare (objeto O1, objeto O2) {Student S1 = (Student) O1; Aluno s2 = (aluno) O2; if (s1.grade> s2.grade) retornar 1; if (s1.grade <s2.grade) retorna -1; // if (s1.grade == s2.grade) return 0; }} O resultado da saída é o seguinte:
ID do aluno: 20070310 Nome: ClassMate 19 Pontuação: 60
ID do aluno: 20070330 Nome: ClassMate 39 Pontuação: 62
ID do aluno: 20070326 Nome: ClassMate 35 Pontuação: 63
ID do aluno: 20070317 Nome: ClassMate 26 Pontuação: 64
ID do aluno: 20070318 Nome: ClassMate 27 Pontuação: 65
ID do aluno: 20070322 Nome: ClassMate 31 Pontuação: 65
ID do aluno: 20070301 Nome: ClassMate 10 Pontuação: 67
ID do aluno: 20070328 Nome: ClassMate 37 Pontuação: 68
ID do aluno: 20070304 Nome: ClassMate 13 Pontuação: 68
ID do aluno: 20070319 Nome: ClassMate 28 Pontuação: 69
ID do aluno: 20070313 Nome: ClassMate 22 Pontuação: 70
ID do aluno: 20070303 Nome: ClassMate 12 Pontuação: 71
ID do aluno: 20070312 Nome: ClassMate 21 Pontuação: 71
ID do aluno: 20070329 Nome: ClassMate 38 Pontuação: 72
ID do aluno: 20070306 Nome: ClassMate 15 Pontuação: 72
ID do aluno: 20070324 Nome: ClassMate 33 Pontuação: 72
ID do aluno: 20070305 Nome: ClassMate 14 Pontuação: 75
ID do aluno: 20070315 Nome: ClassMate 24 Pontuação: 75
ID do aluno: 20070314 Nome: ClassMate 23 Pontuação: 78
ID do aluno: 20070307 Nome: ClassMate 16 Pontuação: 80
ID do aluno: 20070311 Nome: ClassMate 20 Pontuação: 81
ID do aluno: 20070302 Nome: ClassMate 11 Pontuação: 83
ID do aluno: 20070309 Nome: ClassMate 18 Pontuação: 84
ID do aluno: 20070320 Nome: ClassMate 29 Pontuação: 85
ID do aluno: 20070321 Nome: ClassMate 30 Pontuação: 85
ID do aluno: 20070316 Nome: ClassMate 25 Pontuação: 86
ID do aluno: 20070327 Nome: ClassMate 36 Pontuação: 90
ID do aluno: 20070308 Nome: ClassMate 17 Pontuação: 94
ID do aluno: 20070323 Nome: ClassMate 32 Pontuação: 94
ID do aluno: 20070325 Nome: ClassMate 34 Pontuação: 95
Resumo do Hashset :
1. Os elementos no hashset não podem ser repetidos. Se eles forem adicionados repetidamente, apenas um será exibido.
O princípio é o seguinte:
Hashset: a estrutura de dados subjacente é uma tabela de hash. É inseguro. Fora de sincronia.
2. Como o hashset garante a singularidade dos elementos?
Resposta: É feito através de dois métodos de elementos, HashCode e iguais.
Se o valor de hashcode do elemento for o mesmo, será determinado se é igual a ser verdade. Se o valor de hashcode do elemento for diferente, iguais não serão chamados.
3. Classifique o hashset convertendo a coleção de conjuntos em uma coleção de listas e implementando a classificação com a ajuda do método de coleções.sort ().
3. Use Treemap para implementá -lo
pacote com.package1; importar java.util.comparator; importar java.util.iterator; importar java.util.set; importar java.util.treemap; classe pública testtreeMap {public static void main (string [] args) {// 1. Crie uma coleção Treemap <estudante, Integer> tm = novo Treemap <estudante, Integer> (); for (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {int grave = (int) (40*math.random ()+60); // 2. Adicionar elemento TM.put (novo aluno (grau, "Student"+J), i); } // 3. atravessar o conjunto e classificar ele está preenchido <estudante> k = tm.keyyset (); Iterator <very Student> it = k.iterator (); while (it.hasNext ()) {Key do aluno = it.Next (); Inteiro num = tm.get (chave); System.out.println ("Número do aluno:"+num+""+"nome:"+key.name+""+"escore:"+key.grade); }}} classe Student implementa comparável <avery> {int grade; Nome da string; public Student (Int Grade, Nome da String) {this.grade = GRADE; this.name = nome; } @Override public int Compareto (Student O) {if (this.grade> O.grade) retornar 1; if (this.grade == O.Grade) {// Quando as notas são iguais, classifique pelo nome retornar this.name.compareto (O.Name); } retornar -1; }} O resultado da saída é:
ID do aluno: 20070303 Nome: ClassMate 12 Pontuação: 61
ID do aluno: 20070323 Nome: ClassMate 32 Pontuação: 61
ID do aluno: 20070317 Nome: ClassMate 26 Pontuação: 62
ID do aluno: 20070309 Nome: ClassMate 18 Pontuação: 64
ID do aluno: 20070301 Nome: ClassMate 10 Pontuação: 67
ID do aluno: 20070304 Nome: ClassMate 13 Pontuação: 69
ID do aluno: 20070322 Nome: ClassMate 31 Pontuação: 69
ID do aluno: 20070328 Nome: ClassMate 37 Pontuação: 70
ID do aluno: 20070305 Nome: ClassMate 14 Pontuação: 71
ID do aluno: 20070319 Nome: ClassMate 28 Pontuação: 73
ID do aluno: 20070321 Nome: ClassMate 30 Pontuação: 74
ID do aluno: 20070310 Nome: ClassMate 19 Pontuação: 81
ID do aluno: 20070315 Nome: ClassMate 24 Pontuação: 82
ID do aluno: 20070307 Nome: ClassMate 16 Pontuação: 84
ID do aluno: 20070330 Nome: ClassMate 39 Pontuação: 84
ID do aluno: 20070312 Nome: ClassMate 21 Pontuação: 85
ID do aluno: 20070324 Nome: ClassMate 33 Pontuação: 87
ID do aluno: 20070306 Nome: ClassMate 15 Pontuação: 88
ID do aluno: 20070308 Nome: ClassMate 17 Pontuação: 90
ID do aluno: 20070327 Nome: ClassMate 36 Pontuação: 90
ID do aluno: 20070318 Nome: ClassMate 27 Pontuação: 91
ID do aluno: 20070316 Nome: ClassMate 25 Pontuação: 92
ID do aluno: 20070320 Nome: ClassMate 29 Pontuação: 92
ID do aluno: 20070314 Nome: ClassMate 23 Pontuação: 93
ID do aluno: 20070313 Nome: ClassMate 22 Pontuação: 94
ID do aluno: 20070302 Nome: ClassMate 11 Pontuação: 95
ID do aluno: 20070325 Nome: ClassMate 34 Pontuação: 95
ID do aluno: 20070329 Nome: ClassMate 38 Pontuação: 97
ID do aluno: 20070326 Nome: ClassMate 35 Pontuação: 98
ID do aluno: 20070311 Nome: ClassMate 20 Pontuação: 99
Resumo de Treemap :
1. TreeMap classifica a chave por padrão, para que você possa colocar objetos personalizados na chave e colocar o número inteiro representando o número do aluno no valor. Ao classificar uma chave, você pode especificar um atributo em um objeto personalizado para classificá -lo.
2. MAPO COLEÇÃO Usa o método put () para adicionar elementos.
3. O princípio de retirar o conjunto de mapas: converta o mapa definido em um conjunto. Saia através do iterador. Duas maneiras de extrair coleções de mapas:
(1) Definir <K> Tecla: Salve todas as teclas no mapa na coleção Set. Porque o conjunto tem iteradores. Todas as teclas podem ser recuperadas de maneira iterativa de acordo com o método get. Obtenha o valor correspondente a cada tecla.
(2) Definir <pap.entry <k, v >> conjunto de entrada: armazenar o relacionamento de mapeamento na coleção de mapas na coleção de conjuntos, e o tipo de dados desse relacionamento é: map.entry
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.