Вопрос: номер студента из 30 студентов в определенном классе-20070301-20070330. Все они прошли курсы по программированию Java и получили оценки всех студентов (могут генерироваться случайными числами с диапазоном 60-100). Пожалуйста, напишите программу, чтобы распечатать оценки всех учеников в этом классе, чтобы от низкого до высокого уровня.
Требования: Используйте список, карту и установите для реализации его отдельно. Напечатанная информация включает в себя номер студента, название и оценки.
1. Используйте коллекцию списков для реализации
импортировать java.util.arraylist; импортировать java.util.collections; Импорт java.util.comparator; импортировать java.util.iterator; импортировать java.util.linkedlist; импортировать java.util.treemap; public class test2 {public static void main (string [] args) { / * Реализовано с помощью ArrayList здесь * * arraylist <toodtect> al = new ArrayList <tlood> (); for (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {al.add (новый студент (i, (int) (40*math.random ()+60), "студент"+j)); } // Сортировка ArrayList достигается методом SORT () в коллекциях. Collections.sort (al, new sortbygrade ()); для (Студент SD: Al) System.out.println (SD); */ LinkedList <toodtle> lt = new LinkedList <toodtle> (); for (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {lt.Add (новый студент (i, (int) (40*math.random ()+60), "студент"+j)); } // Сортировка связанных списков Collections.sort (LT, New SortByGrade ()); // Вывод связанный список для (Student SD: LT) System.out.println (SD); }} // ученик ученика {int num, grade; String name; // конструктор Public Student (int num, int grade, string name) {this.num = num; this.name = name; this.Grade = Grade; } // public String toString () {// System.out.println ("hi"); вернуть "номер студента:"+this.num+"/t"+"name:"+this.name+""+"оценка:"+this.grade; }} // Создать компаратор класс SortBygrade реализует компаратор <dent> {@Override public int compare (студент S1, студент S2) {if (s1.grade> s2.grable) return 1; if (s1.grade <s2.grade) return -1; if (s1.grade == s2.grade) return s1.name.compareto (s2.name); возврат 0; }}Результат вывода показан на рисунке:
Сводка фреймворка сбора списков:
1. Сбор списков на самом деле является динамическим массивом, и элементы могут быть непосредственно вывезены через петлю без итерации.
2. При выводе сбора списков метод ToString (), который хранит объект в коллекции, будет вызван по умолчанию, поэтому его необходимо перезаписано в классе.
Если метод toString () не переопределен, он должен использоваться
for (int i = 0; i <lt.size (); i ++) {Студент s = lt.get (i); System.out.println ("номер студента:"+s.num+"name:"+s.name+"оценка:"+s.grade); } 3. Сортировка коллекций списков требует помощи класса инструментов Collections, то есть метода Collections.sort (List, New Comporator Class ()). Поэтому вам необходимо настроить класс компаратора и определить свои собственные правила сравнения.
2. Используйте набор коллекций для реализации
(1) Используйте Treesset для реализации
пакет com.package1; Импорт java.util.*; открытый класс Stuscore {public static void main (string [] args) {reeset <toodte> ts = new Treeset <toodte> (new com ()); // Добавить элементы в (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {ts.Add (новый студент (i, "студент"+j, (int) (40*math.random ()+60))); } // Итеративный цикл для извлечения итератора <студента> it = ts.iterator (); while (it.hasnext ()) {студент o1 = it.next (); System.out.println ("номер студента:"+o1.num+""+"name:"+o1.name+""+""+"оценка:"+o1.grade); }}} // Студент учеников {int num; int grade; String name; Public Student (int num, String name, int grade) {this.num = num; this.name = name; this.Grade = Grade; }} класс com реализует компаратор {@Override public int compare (объект O1, объект O2) {Студент S1 = (студент) O1; Студент S2 = (студент) O2; if (s1.grade> s2.grade) return 1; if (s1.grade <s2.grade) return -1; if (s1.grade == s2.grade) {return new Integer (s1.num) .compareto (new Integer (s2.num)); } return 0; }} Результатом вывода:
Идентификатор студента: 20070307 Имя: одноклассник 16 Оценка: 60
Идентификатор студента: 20070309 Имя: одноклассник 18 Оценка: 60
Идентификатор студента: 20070314 Имя: одноклассник 23 Оценка: 61
Идентификатор студента: 20070318 Имя: одноклассник 27 Оценка: 61
Идентификатор студента: 20070322 Имя: одноклассник 31 Оценка: 61
Идентификатор студента: 20070306 Имя: одноклассник 15 Оценка: 62
Идентификатор студента: 20070310 Имя: одноклассник 19 Оценка: 64
Идентификатор студента: 20070302 Имя: одноклассник 11 Оценка: 66
Идентификатор студента: 20070308 Имя: одноклассник 17 Оценка: 68
Идентификатор студента: 20070321 Имя: одноклассник 30 Оценка: 68
Идентификатор студента: 20070330 Имя: одноклассник 39 Оценка: 69
Идентификатор студента: 20070303 Имя: одноклассник 12 Оценка: 70
Идентификатор студента: 20070320 Имя: одноклассник 29 Оценка: 70
Идентификатор студента: 20070323 Имя: одноклассник 32 Оценка: 77
Идентификатор студента: 20070313 Имя: одноклассник 22 Оценка: 78
Идентификатор студента: 20070304 Имя: одноклассник 13 Оценка: 79
Идентификатор студента: 20070324 Имя: одноклассник 33 Оценка: 83
Идентификатор студента: 20070326 Имя: одноклассник 35 Оценка: 84
Идентификатор студента: 20070327 Имя: одноклассник 36 Оценка: 85
Идентификатор студента: 20070311 Имя: одноклассник 20 Оценка: 88
Идентификатор студента: 20070305 Имя: одноклассник 14 Оценка: 89
Идентификатор студента: 20070329 Имя: одноклассник 38 Оценка: 89
Идентификатор студента: 20070316 Имя: одноклассник 25 Оценка: 90
Идентификатор студента: 20070301 Имя: одноклассник 10 Оценка: 95
Идентификатор студента: 20070312 Имя: одноклассник 21 Оценка: 96
Идентификатор студента: 20070317 Имя: одноклассник 26 Оценка: 97
Идентификатор студента: 20070319 Имя: одноклассник 28 Оценка: 97
Идентификатор студента: 20070325 Имя: одноклассник 34 Оценка: 98
Идентификатор студента: 20070315 Имя: одноклассник 24 Оценка: 99
Идентификатор студента: 20070328 Имя: одноклассник 37 Оценка: 99
Резюме Treesset :
1. Элементы не могут быть повторены, а Treesset заказан.
2. Два метода сортировки:
(1) Настройте класс компаратора, такой как Class Com ImpromentionComparator {}, реализуйте метод Compare (Object O1, Object O2), и определите правила сравнения в нем.
(2) Сделайте элементы сами сравнительными.
Шаги: добавьте элемент в TreesSet, чтобы реализовать сопоставимый интерфейс и переопределить метод сравнения. Этот порядок также является естественным порядком элементов или порядок по умолчанию.
Разница между методом 1 и методом 2:
Эти два метода имеют свои преимущества и недостатки. Это просто использовать сопоставимо. Пока объект, который реализует сопоставимый интерфейс, становится сопоставимым объектом, он требует изменения исходного кода.
Преимущество использования компаратора заключается в том, что он не требует изменения исходного кода, а реализации компаратора. Когда необходимо сравнивать пользовательский объект, передача компаратора и объекта вместе может сравнить размер. В компараторе пользователи могут самостоятельно реализовать сложную и общую логику, чтобы они могли соответствовать некоторым относительно простым объектам, которые могут сэкономить много повторяющихся рабочей силы.
(2) Используйте хэшсет для реализации
пакет com.package1; Импорт java.util.*; public Class Stuscore {public static void main (string [] args) {hashset <toold> hs = new Hashset <toodte> (); // Добавить элементы в для (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {hs.add (новый студент (i, "студент"+j, (int) (40*math.random ()+60))); } ArrayList <Tlden> li = new ArrayList (HS); Collections.sort (li, New Sortbygrade ()); для (студент SS: li) System.out.println (SS); }} // ученик ученика {int num; int grade; String name; Public Student (int num, String name, int grade) {this.num = num; this.name = name; this.Grade = Grade; } public String toString () {//system.out.println("hi "); вернуть "номер студента:"+this.num+"/t"+"name:"+this.name+""+"оценка:"+this.grade; }} класс sortbygrade реализует компаратор {@Override public int compare (Object O1, Object O2) {Студент S1 = (студент) O1; Студент S2 = (студент) O2; if (s1.grade> s2.grade) return 1; if (s1.grade <s2.grade) return -1; // if (s1.grade == s2.grade) return 0; }} Результат вывода заключается в следующем:
Идентификатор студента: 20070310 Имя: одноклассник 19 Оценка: 60
Идентификатор студента: 20070330 Имя: одноклассник 39 Оценка: 62
Идентификатор студента: 20070326 Имя: одноклассник 35 Оценка: 63
Идентификатор студента: 20070317 Имя: одноклассник 26 Оценка: 64
Идентификатор студента: 20070318 Имя: одноклассник 27 Оценка: 65
Идентификатор студента: 20070322 Имя: одноклассник 31 Оценка: 65
Идентификатор студента: 20070301 Имя: одноклассник 10 Оценка: 67
Идентификатор студента: 20070328 Имя: одноклассник 37 Оценка: 68
Идентификатор студента: 20070304 Имя: одноклассник 13 Оценка: 68
Идентификатор студента: 20070319 Имя: одноклассник 28 Оценка: 69
Идентификатор студента: 20070313 Имя: одноклассник 22 Оценка: 70
Идентификатор студента: 20070303 Имя: одноклассник 12 Оценка: 71
Идентификатор студента: 20070312 Имя: одноклассник 21 Оценка: 71
Идентификатор студента: 20070329 Имя: одноклассник 38 Оценка: 72
Идентификатор студента: 20070306 Имя: одноклассник 15 Оценка: 72
Идентификатор студента: 20070324 Имя: одноклассник 33 Оценка: 72
Идентификатор студента: 20070305 Имя: одноклассник 14 Оценка: 75
Идентификатор студента: 20070315 Имя: одноклассник 24 Оценка: 75
Идентификатор студента: 20070314 Имя: одноклассник 23 Оценка: 78
Идентификатор студента: 20070307 Имя: одноклассник 16 Оценка: 80
Идентификатор студента: 20070311 Имя: одноклассник 20 Оценка: 81
Идентификатор студента: 20070302 Имя: одноклассник 11 Оценка: 83
Идентификатор студента: 20070309 Имя: одноклассник 18 Оценка: 84
Идентификатор студента: 20070320 Имя: одноклассник 29 Оценка: 85
Идентификатор студента: 20070321 Имя: одноклассник 30 Оценка: 85
Идентификатор студента: 20070316 Имя: одноклассник 25 Оценка: 86
Идентификатор студента: 20070327 Имя: одноклассник 36 Оценка: 90
Идентификатор студента: 20070308 Имя: одноклассник 17 Оценка: 94
Идентификатор студента: 20070323 Имя: одноклассник 32 Оценка: 94
Идентификатор студента: 20070325 Имя: одноклассник 34 Оценка: 95
Сводка хешса :
1. Элементы в хэшсете не могут быть повторены. Если они добавляются неоднократно, будет отображаться только один.
Принцип заключается в следующем:
Хэшсет: основная структура данных является хэш -таблицей. Это нерешительность нити. Вне синхронизации.
2. Как хэшсет обеспечивает уникальность элементов?
Ответ: это делается с помощью двух методов элементов, хэшкодов и равных.
Если значение хэшкода элемента одинаково, будет определено, является ли равным истинным. Если значение хэшкода элемента отличается, равные не будут вызваны.
3. Сортируйте хэшсет, преобразуя коллекцию SET в коллекцию списков, и реализуя сортировку с помощью метода Collections.sort ().
3. Используйте TreeMap для его реализации
пакет com.package1; Импорт java.util.comparator; импортировать java.util.iterator; импортировать java.util.set; импортировать java.util.treemap; открытый класс TestTreemap {public static void main (string [] args) {// 1. Создать коллекцию TreeMap <Студент, Integer> TM = New TreeMap <Студент, Integer> (); for (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {int grade = (int) (40*math.random ()+60); // 2. Добавить элемент tm.put (новый ученик (класс, "студент"+j), i); } // 3. Переверните набор и сортируйте его завершено, набор <toolder> k = tm.keyset (); Итератор <студент> it = k.iterator (); while (it.hasnext ()) {студент key = it.next (); Integer num = tm.get (key); System.out.println ("номер студента:"+num+""+"name:"+key.name+""+"оценка:"+key.grade); }}} класс Студент реализует сопоставимо <toodte> {int grade; String name; Public Student (int grade, string name) {this.grade = grade; this.name = name; } @Override public int compareto (студент o) {if (this.grade> o.grade) return 1; if (this.grade == o.grade) {// Когда оценки одинаковы, сортируйте по имени вернуть this.name.compareto (o.name); } return -1; }} Результатом вывода:
Идентификатор студента: 20070303 Имя: одноклассник 12 Оценка: 61
Идентификатор студента: 20070323 Имя: одноклассник 32 Оценка: 61
Идентификатор студента: 20070317 Имя: одноклассник 26 Оценка: 62
Идентификатор студента: 20070309 Имя: одноклассник 18 Оценка: 64
Идентификатор студента: 20070301 Имя: одноклассник 10 Оценка: 67
Идентификатор студента: 20070304 Имя: одноклассник 13 Оценка: 69
Идентификатор студента: 20070322 Имя: одноклассник 31 Оценка: 69
Идентификатор студента: 20070328 Имя: одноклассник 37 Оценка: 70
Идентификатор студента: 20070305 Имя: одноклассник 14 Оценка: 71
Идентификатор студента: 20070319 Имя: одноклассник 28 Оценка: 73
Идентификатор студента: 20070321 Имя: одноклассник 30 Оценка: 74
Идентификатор студента: 20070310 Имя: одноклассник 19 Оценка: 81
Идентификатор студента: 20070315 Имя: одноклассник 24 Оценка: 82
Идентификатор студента: 20070307 Имя: одноклассник 16 Оценка: 84
Идентификатор студента: 20070330 Имя: одноклассник 39 Оценка: 84
Идентификатор студента: 20070312 Имя: одноклассник 21 Оценка: 85
Идентификатор студента: 20070324 Имя: одноклассник 33 Оценка: 87
Идентификатор студента: 20070306 Имя: одноклассник 15 Оценка: 88
Идентификатор студента: 20070308 Имя: одноклассник 17 Оценка: 90
Идентификатор студента: 20070327 Имя: одноклассник 36 Оценка: 90
Идентификатор студента: 20070318 Имя: одноклассник 27 Оценка: 91
Идентификатор студента: 20070316 Имя: одноклассник 25 Оценка: 92
Идентификатор студента: 20070320 Имя: одноклассник 29 Оценка: 92
Идентификатор студента: 20070314 Имя: одноклассник 23 Оценка: 93
Идентификатор студента: 20070313 Имя: одноклассник 22 Оценка: 94
Идентификатор студента: 20070302 Имя: одноклассник 11 Оценка: 95
Идентификатор студента: 20070325 Имя: одноклассник 34 Оценка: 95
Идентификатор студента: 20070329 Имя: одноклассник 38 Оценка: 97
Идентификатор студента: 20070326 Имя: одноклассник 35 Оценка: 98
Идентификатор студента: 20070311 Имя: одноклассник 20 Оценка: 99
Резюме TREEMAP :
1. TreeMap сортирует ключ по умолчанию, поэтому вы можете поместить пользовательские объекты в ключ и поместить целое число, представляющее номер студента в значение. При сортировке ключа вы можете указать атрибут в пользовательском объекте, чтобы сортировать его.
2. Коллекция карты использует метод put () для добавления элементов.
3. Принцип принятия набора карт: преобразовать набор карты в набор. Выйти через итератор. Два способа извлечения коллекций карт:
(1) Установите <k> keyset: Сохраните все клавиши в карте в коллекции SET. Потому что у Set есть итераторы. Все ключи могут быть извлечены итеративным способом в соответствии с методом GET. Получите значение, соответствующее каждому ключу.
(2) Установите <map.Entry <K, V >> Вход: хранить отношения отображения в сборе карт в сборе набора, и тип данных этого отношения: map.Entry
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.