Pertanyaan: Jumlah siswa dari 30 siswa di kelas tertentu adalah 20070301-20070330. Semuanya telah mengambil kursus pemrograman Java dan memberikan nilai semua siswa (dapat dihasilkan dengan angka acak, dengan kisaran 60-100). Silakan tulis program untuk mencetak nilai semua siswa di kelas ini agar dari rendah ke tinggi.
Persyaratan: Gunakan daftar, peta, dan set untuk mengimplementasikannya secara terpisah. Informasi yang dicetak mencakup nomor siswa, nama, dan nilai.
1. Gunakan koleksi daftar untuk diimplementasikan
impor java.util.arraylist; impor java.util.collections; impor java.util.comparator; impor java.util.iterator; impor java.util.linkedlist; impor java.util.treemap; test kelas publik2 {public static void main (string [] args) { / * diimplementasikan dengan arraylist di sini * * arraylist <schuelent> al = new ArrayList <shuents> (); untuk (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {al.add (siswa baru (i, (int) (40*math.random ()+60), "siswa"+j)); } // Penyortiran ArrayList dicapai dengan metode sort () dalam koleksi. Collections.sort (al, new sortbygrade ()); untuk (SD Student: Al) System.out.println (SD); */ LinkedList <Sahasiswa> lt = new LinkedList <Shudent> (); untuk (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {lt.add (siswa baru (i, (int) (40*math.random ()+60), "siswa"+j)); } // Urutkan koleksi daftar yang ditautkan. // output daftar tertaut untuk (siswa SD: LT) system.out.println (SD); }} // siswa kelas siswa {int num, grade; Nama string; // Konstruktor Mahasiswa publik (int num, grade int, nama string) {this.num = num; this.name = name; this.grade = grade; } // public string toString () {// system.out.println ("hai"); kembalikan "Nomor Siswa:"+this.num+"/t"+"nama:"+this.name+""+"skor:"+this.grade; }} // Buat kelas pembanding SortByGrade mengimplementasikan komparator <spinition> {@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); kembali 0; }}Hasil output ditunjukkan pada gambar:
Ringkasan Kerangka Koleksi Daftar:
1. Koleksi daftar sebenarnya adalah array dinamis, dan elemen dapat langsung dikeluarkan melalui loop tanpa iterasi.
2. Saat mengeluarkan koleksi daftar, metode tostring () yang menyimpan objek dalam koleksi akan dipanggil secara default, sehingga perlu ditimpa di kelas.
Jika metode tostring () tidak ditimpa, itu harus digunakan
untuk (int i = 0; i <lt.size (); i ++) {student S = lt.get (i); System.out.println ("Nomor Siswa:"+S.num+"Nama:"+S.Name+"Skor:"+S.Grade); } 3. Penyortiran koleksi daftar memerlukan bantuan kelas alat koleksi, yaitu, metode collections.sort (daftar, kelas pembanding baru ()). Oleh karena itu, Anda perlu menyesuaikan kelas pembanding dan menentukan aturan perbandingan Anda sendiri.
2. Gunakan set koleksi untuk diimplementasikan
(1) Gunakan TreeSet untuk diterapkan
paket com.package1; impor java.util.*; kelas publik stuscore {public static void main (string [] args) {TreeSet <shongents> ts = TreeSet baru <Sidu- student> (com baru ()); // Tambahkan elemen dalam untuk (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {ts.add (siswa baru (i, "siswa"+j, (int) (40*math.random ()+60))); } // loop iteratif untuk mengambil iterator <shonish> itu = ts.iterator (); while (it.hasnext ()) {student o1 = it.next (); System.out.println ("Nomor Siswa:"+O1.num+""+"Nama:"+O1.Name+""+""+"Skor:"+O1.Grade); }}} // siswa kelas siswa {int num; tingkat int; Nama string; siswa publik (int num, nama string, grade int) {this.num = num; this.name = name; this.grade = grade; }} class com mengimplementasikan pembanding {@Override public int perbandingan (objek o1, objek o2) {student s1 = (siswa) o1; Siswa S2 = (Siswa) O2; if (s1.grade> s2.grade) kembali 1; if (s1.grade <s2.grade) return -1; if (s1.grade == s2.grade) {return new integer (s1.num) .compareto (integer baru (s2.num)); } return 0; }} Hasil outputnya adalah:
ID Mahasiswa: 20070307 Nama: Teman Sekelas 16 Skor: 60
ID Mahasiswa: 20070309 Nama: Teman Sekelas 18 Skor: 60
ID Siswa: 20070314 Nama: Teman Sekelas 23 Skor: 61
ID Mahasiswa: 20070318 Nama: Teman Sekelas 27 Skor: 61
ID Mahasiswa: 20070322 Nama: Teman Sekelas 31 Skor: 61
ID Mahasiswa: 20070306 Nama: Teman Sekelas 15 Skor: 62
ID Siswa: 20070310 Nama: Teman Sekelas 19 Skor: 64
ID Mahasiswa: 20070302 Nama: Teman Sekelas 11 Skor: 66
ID Siswa: 20070308 Nama: Teman Sekelas 17 Skor: 68
ID Siswa: 20070321 Nama: Teman Sekelas 30 Skor: 68
ID Mahasiswa: 20070330 Nama: Teman Sekelas 39 Skor: 69
ID Siswa: 20070303 Nama: Teman Sekelas 12 Skor: 70
ID Mahasiswa: 20070320 Nama: Teman Sekelas 29 Skor: 70
ID Siswa: 20070323 Nama: Teman Sekelas 32 Skor: 77
ID Siswa: 20070313 Nama: Teman Sekelas 22 Skor: 78
ID Mahasiswa: 20070304 Nama: Teman Sekelas 13 Skor: 79
ID Siswa: 20070324 Nama: Teman Sekelas 33 Skor: 83
ID Siswa: 20070326 Nama: Teman Sekelas 35 Skor: 84
ID Mahasiswa: 20070327 Nama: Teman Sekelas 36 Skor: 85
ID Siswa: 20070311 Nama: Teman Sekelas 20 Skor: 88
ID Mahasiswa: 20070305 Nama: Teman Sekelas 14 Skor: 89
ID Mahasiswa: 20070329 Nama: Teman Sekelas 38 Skor: 89
ID Siswa: 20070316 Nama: Teman Sekelas 25 Skor: 90
ID Siswa: 20070301 Nama: Teman Sekelas 10 Skor: 95
ID Mahasiswa: 20070312 Nama: Teman Sekelas 21 Skor: 96
ID Siswa: 20070317 Nama: Teman Sekelas 26 Skor: 97
ID Siswa: 20070319 Nama: Teman Sekelas 28 Skor: 97
ID Mahasiswa: 20070325 Nama: Teman Sekelas 34 Skor: 98
ID Siswa: 20070315 Nama: Teman Sekelas 24 Skor: 99
ID Mahasiswa: 20070328 Nama: Teman Sekelas 37 Skor: 99
Ringkasan TreeSet :
1. Elemen tidak dapat diulang, dan Treeset dipesan.
2. Dua metode penyortiran:
(1) Kustomisasi kelas pembanding, seperti Class Com mengimplementasikan Comparator {}, mengimplementasikan metode perbandingan (objek O1, Objek O2), dan tentukan aturan perbandingan di dalamnya.
(2) Jadikan elemen itu sendiri komparatif.
Langkah -langkah: Tambahkan elemen di TreeSet untuk mengimplementasikan antarmuka yang sebanding dan mengganti metode compareTo. Urutan ini juga merupakan urutan alami elemen, atau urutan default.
Perbedaan antara metode 1 dan metode 2:
Kedua metode ini memiliki kelebihan dan kekurangannya sendiri. Mudah digunakan sebanding. Selama objek yang mengimplementasikan antarmuka yang sebanding menjadi objek yang sebanding, ia memerlukan modifikasi kode sumber.
Keuntungan menggunakan pembanding adalah tidak perlu memodifikasi kode sumber, tetapi menerapkan pembanding. Ketika objek kustom perlu dibandingkan, melewati pembanding dan objek bersama -sama dapat membandingkan ukurannya. Sebagai pembanding, pengguna dapat menerapkan logika yang kompleks dan umum sendiri, sehingga mereka dapat mencocokkan beberapa objek yang relatif sederhana, yang dapat menghemat banyak tenaga kerja berulang.
(2) Gunakan hashset untuk mengimplementasikan
paket com.package1; impor java.util.*; Public Class StusCore {public static void main (string [] args) {hashset <shongents> hs = hashset baru <shuent> (); // Tambahkan elemen dalam untuk (int i = 20070301, j = 1; i <= 20070330; i ++, j ++) {hs.add (siswa baru (i, "siswa"+j, (int) (40*math.random ()+60))); } ArrayList <Sahasiswa> Li = new ArrayList (HS); Collections.sort (li, new sortbygrade ()); untuk (Li) System.out.println (SS); }} // siswa kelas siswa {int num; tingkat int; Nama string; siswa publik (int num, nama string, grade int) {this.num = num; this.name = name; this.grade = grade; } public string toString () {//system.out.println("hi "); kembalikan "Nomor Siswa:"+this.num+"/t"+"nama:"+this.name+""+"skor:"+this.grade; }} class sortByGrade mengimplementasikan pembanding {@override int kompleks (objek o1, objek o2) {student s1 = (siswa) o1; Siswa S2 = (Siswa) O2; if (s1.grade> s2.grade) kembali 1; if (s1.grade <s2.grade) return -1; // if (s1.grade == s2.grade) mengembalikan 0; }} Hasil output adalah sebagai berikut:
ID Siswa: 20070310 Nama: Teman Sekelas 19 Skor: 60
ID Mahasiswa: 20070330 Nama: Teman Sekelas 39 Skor: 62
ID Mahasiswa: 20070326 Nama: Teman Sekelas 35 Skor: 63
ID Siswa: 20070317 Nama: Teman Sekelas 26 Skor: 64
ID Siswa: 20070318 Nama: Teman Sekelas 27 Skor: 65
ID Siswa: 20070322 Nama: Teman Sekelas 31 Skor: 65
ID Siswa: 20070301 Nama: Teman Sekelas 10 Skor: 67
ID Mahasiswa: 20070328 Nama: Teman Sekelas 37 Skor: 68
ID Mahasiswa: 20070304 Nama: Teman Sekelas 13 Skor: 68
ID Siswa: 20070319 Nama: Teman Sekelas 28 Skor: 69
ID Siswa: 20070313 Nama: Teman Sekelas 22 Skor: 70
ID Siswa: 20070303 Nama: Teman Sekelas 12 Skor: 71
ID Mahasiswa: 20070312 Nama: Teman Sekelas 21 Skor: 71
ID Mahasiswa: 20070329 Nama: Teman Sekelas 38 Skor: 72
ID Siswa: 20070306 Nama: Teman Sekelas 15 Skor: 72
ID Mahasiswa: 20070324 Nama: Teman Sekelas 33 Skor: 72
ID Siswa: 20070305 Nama: Teman Sekelas 14 Skor: 75
ID Mahasiswa: 20070315 Nama: Teman Sekelas 24 Skor: 75
ID Mahasiswa: 20070314 Nama: Teman Sekelas 23 Skor: 78
ID Siswa: 20070307 Nama: Teman Sekelas 16 Skor: 80
ID Mahasiswa: 20070311 Nama: Teman Sekelas 20 Skor: 81
ID Siswa: 20070302 Nama: Teman Sekelas 11 Skor: 83
ID Siswa: 20070309 Nama: Teman Sekelas 18 Skor: 84
ID Siswa: 20070320 Nama: Teman Sekelas 29 Skor: 85
ID Mahasiswa: 20070321 Nama: Teman Sekelas 30 Skor: 85
ID Siswa: 20070316 Nama: Teman Sekelas 25 Skor: 86
ID Siswa: 20070327 Nama: Teman Sekelas 36 Skor: 90
ID Siswa: 20070308 Nama: Teman Sekelas 17 Skor: 94
ID Siswa: 20070323 Nama: Teman Sekelas 32 Skor: 94
ID Siswa: 20070325 Nama: Teman Sekelas 34 Skor: 95
Ringkasan Hashset :
1. Elemen -elemen dalam hashset tidak dapat diulang. Jika ditambahkan berulang kali, hanya satu yang akan ditampilkan.
Prinsipnya adalah sebagai berikut:
Hashset: Struktur data yang mendasarinya adalah tabel hash. Ini adalah benang-benang. Tidak sinkron.
2. Bagaimana Hashset memastikan keunikan elemen?
Jawaban: Ini dilakukan melalui dua metode elemen, kode hash dan setara.
Jika nilai kode hash dari elemen adalah sama, itu akan ditentukan apakah setara benar. Jika nilai kode hash dari elemen berbeda, sama dengan tidak akan dipanggil.
3. Urutkan hashset dengan mengubah koleksi set menjadi koleksi daftar, dan mengimplementasikan penyortiran dengan bantuan metode collections.sort ().
3. Gunakan TreeMap untuk mengimplementasikannya
paket com.package1; impor java.util.comparator; impor java.util.iterator; impor java.util.set; impor java.util.treemap; Public Class testtreemap {public static void main (string [] args) {// 1. Buat koleksi TreeMap <Student, Integer> tm = TreeMap baru <Student, Integer> (); untuk (int i = 20070301, j = 10; i <= 20070330; i ++, j ++) {int grade = (int) (40*math.random ()+60); // 2. Tambahkan elemen Tm.put (siswa baru (kelas, "siswa"+j), i); } // 3. melintasi set dan mengurutkan itu diselesaikan set <shonish> k = tm.keyset (); Iterator <shonish> itu = k.iterator (); while (it.hasnext ()) {student key = it.next (); Integer num = tmget (key); System.out.println ("Nomor Siswa:"+Num+""+"Nama:"+Key.Name+""+"Skor:"+Key.Grade); }}} kelas siswa mengimplementasikan yang sebanding dengan <spuelar> {int grade; Nama string; siswa publik (nilai int, nama string) {this.grade = grade; this.name = name; } @Override public int compareto (siswa o) {if (this.grade> o.grade) return 1; if (this.grade == o.grade) {// Ketika nilai sama, urutkan dengan nama return this.name.compareto (o.name); } return -1; }} Hasil outputnya adalah:
ID Mahasiswa: 20070303 Nama: Teman Sekelas 12 Skor: 61
ID Siswa: 20070323 Nama: Teman Sekelas 32 Skor: 61
ID Siswa: 20070317 Nama: Teman Sekelas 26 Skor: 62
ID Mahasiswa: 20070309 Nama: Teman Sekelas 18 Skor: 64
ID Siswa: 20070301 Nama: Teman Sekelas 10 Skor: 67
ID Mahasiswa: 20070304 Nama: Teman Sekelas 13 Skor: 69
ID Siswa: 20070322 Nama: Teman Sekelas 31 Skor: 69
ID Siswa: 20070328 Nama: Teman Sekelas 37 Skor: 70
ID Mahasiswa: 20070305 Nama: Teman Sekelas 14 Skor: 71
ID Siswa: 20070319 Nama: Teman Sekelas 28 Skor: 73
ID Siswa: 20070321 Nama: Teman Sekelas 30 Skor: 74
ID Mahasiswa: 20070310 Nama: Teman Sekelas 19 Skor: 81
ID Mahasiswa: 20070315 Nama: Teman Sekelas 24 Skor: 82
ID Mahasiswa: 20070307 Nama: Teman Sekelas 16 Skor: 84
ID Siswa: 20070330 Nama: Teman Sekelas 39 Skor: 84
ID Mahasiswa: 20070312 Nama: Teman Sekelas 21 Skor: 85
ID Siswa: 20070324 Nama: Teman Sekelas 33 Skor: 87
ID Mahasiswa: 20070306 Nama: Teman Sekelas 15 Skor: 88
ID Mahasiswa: 20070308 Nama: Teman Sekelas 17 Skor: 90
ID Siswa: 20070327 Nama: Teman Sekelas 36 Skor: 90
ID Siswa: 20070318 Nama: Teman Sekelas 27 Skor: 91
ID Siswa: 20070316 Nama: Teman Sekelas 25 Skor: 92
ID Siswa: 20070320 Nama: Teman Sekelas 29 Skor: 92
ID Siswa: 20070314 Nama: Teman Sekelas 23 Skor: 93
ID Siswa: 20070313 Nama: Teman Sekelas 22 Skor: 94
ID Siswa: 20070302 Nama: Teman Sekelas 11 Skor: 95
ID Siswa: 20070325 Nama: Teman Sekelas 34 Skor: 95
ID Siswa: 20070329 Nama: Teman Sekelas 38 Skor: 97
ID Mahasiswa: 20070326 Nama: Teman Sekelas 35 Skor: 98
ID Siswa: 20070311 Nama: Teman Sekelas 20 Skor: 99
Ringkasan TreeMap :
1. TreeMap mengurutkan kunci secara default, sehingga Anda dapat memasukkan objek khusus ke dalam kunci dan memasukkan bilangan bulat yang mewakili nomor siswa ke dalam nilai. Saat mengurutkan kunci, Anda dapat menentukan atribut dalam objek khusus untuk mengurutkannya.
2. Koleksi peta menggunakan metode put () untuk menambahkan elemen.
3. Prinsip Mengambil Set Peta: Konversi peta yang diatur ke dalam satu set. Keluar melalui iterator. Dua cara untuk mengekstrak koleksi peta:
(1) Atur <k> keyset: Simpan semua tombol di peta ke dalam koleksi set. Karena set memiliki iterator. Semua kunci dapat diambil dengan cara berulang sesuai dengan metode GET. Dapatkan nilai yang sesuai dengan setiap kunci.
(2) Set <Map.entry <K, V >> Entryset: Simpan hubungan pemetaan dalam koleksi peta ke dalam koleksi set, dan tipe data dari hubungan ini adalah: map.entry
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.