Dalam siaran ini kita akan melihat cara menggunakan Java Streams API untuk mengira maksimum dan minimum koleksi elemen. Untuk melakukan ini, kita akan menggunakan kaedah max() dan min() bagi kelas Stream. Kaedah ini membolehkan kami memperoleh maksimum dan minimum koleksi elemen, masing-masing, menggunakan pembanding tersuai.
Andaikan kita mempunyai senarai jenis Senarai
public record Exam(String name, Double grade) { }
var exams = Arrays.asList( new Exam("Alice", 9.5), new Exam("Bob", 6.0), new Exam("Charlie", 7.5), new Exam("David", 8.0), new Exam("Eve", 8.5) );
Dalam versi Java terkini, anda boleh menggunakan kaedah max() dan min() kelas Stream untuk tujuan ini dengan menghantar pembanding tersuai dan mendapatkan Pilihan
Mari mulakan dengan mencipta pembanding tersuai jenis Comparator
Comparator<Exam> byGradeAsc = (e1, e2) -> (int) (e1.grade() - e2.grade());
Sebagai contoh, pembanding ini akan mengembalikan nombor negatif jika gred peperiksaan pertama kurang daripada gred kedua, sifar jika sama dan nombor positif jika gred peperiksaan pertama lebih besar daripada gred peperiksaan pertama. yang kedua, untuk mendapatkan maklumat lanjut anda boleh merujuk pautan ini ke siaran yang menerangkan cara antara muka Pembanding berfungsi.
Pembanding ini boleh ditakrifkan dengan cara lain menggunakan kaedah comparingDouble() kelas Comparator yang membolehkan kita mencipta komparator daripada fungsi yang mengekstrak nilai berganda daripada objek tanpa perlu menulis pembanding secara manual.
Comparator<Exam> byGradeAscClean = Comparator.comparingDouble(Exam::grade);
Dalam takrifan ini, pembanding diberitahu bahawa ia mesti mengambil objek jenis Peperiksaan, mengekstrak nilai sifat gred dan membandingkan nilai menggunakan jenis data Berganda.
Kedua-dua cara ini adalah setara dan boleh digunakan secara bergantian, yang kedua mungkin agak sukar untuk difahami pada mulanya, tetapi apabila anda memahaminya, lebih mudah untuk menulis dan membaca.
Sekarang anda mempunyai pembanding, yang tinggal hanyalah menggunakannya dalam kaedah maks() dan min() untuk mendapatkan peperiksaan dengan markah tertinggi dan terendah, masing-masing.
public record Exam(String name, Double grade) { }
Dalam kes ini, anda mendapat Pilihan
var exams = Arrays.asList( new Exam("Alice", 9.5), new Exam("Bob", 6.0), new Exam("Charlie", 7.5), new Exam("David", 8.0), new Exam("Eve", 8.5) );
Atau hanya lulus sebagai hujah kaedah rujukan untuk mencetak nilai Pilihan, jika Pilihan kosong tiada apa yang akan dicetak, jika tidak nilai Pilihan akan dicetak dengan memanggil kaedah toString() objek Peperiksaan
Comparator<Exam> byGradeAsc = (e1, e2) -> (int) (e1.grade() - e2.grade());
Di sana, dengan cara ini anda boleh mendapatkan maksimum dan minimum koleksi elemen menggunakan Java Streams API dan antara muka Comparator.
Atas ialah kandungan terperinci Bagaimana untuk mengira maksimum dan minimum dalam Java menggunakan Streams?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!