Dalam bahagian ini, kami akan menulis program Java untuk mencari nombor ganjil terbesar dalam tatasusunan menggunakan aliran dan penapis. nombor ganjil ialah nombor yang tidak boleh dibahagi dengan "2", atau bakinya ialah 1 apabila dibahagikan dengan "2". Dengan kata lain, ia boleh ditulis dalam bentuk ‘2n+1’. Kami akan mencari nombor ganjil terbesar dalam tatasusunan.
Contoh
Input: array = {1, 7, 2, 3, 9, 5, 10}
Output: Maximum odd number is 9
Salin selepas log masuk
Daripada contoh di atas, nombor ganjil terbesar dalam tatasusunan ialah 9.
Input: array = {11, 17, 12, 13, 19, 15, 20}
Output: Maximum odd number is 19
Salin selepas log masuk
Daripada contoh di atas, nombor ganjil terbesar dalam tatasusunan ialah 19.
Cara menggunakan
stream() - Ia digunakan untuk mencipta aliran elemen supaya kita boleh menggunakan kaedah penapis(), map(), reduce(), dsb. untuk memproses data # 🎜🎜#
Arrays.stream(collection)
Salin selepas log masuk
filter() - Digunakan untuk menapis data dalam strim, iaitu, untuk memilih elemen tertentu daripada strim berdasarkan syarat. Ia mengembalikan nilai boolean.
treamobject.filter(condition)
Salin selepas log masuk
reduce() - Digunakan untuk mengurangkan bilangan elemen dan mengembalikan nombor hasil tunggal berdasarkan operasi binari.
Streamobject.reduce(initial value, binary operation)
Salin selepas log masuk
Kini kita akan membincangkan cara yang berbeza untuk mencari nombor ganjil terbesar dalam tatasusunan menggunakan strim dan penapis (dilaksanakan menggunakan kod dalam Java).
Algoritma
- Memulakan tatasusunan dan gunakan kaedah strim() untuk mencipta strim untuk tatasusunan
- Gunakan kaedah penapis() dan parameter sebagai syarat untuk menapis strim untuk menapis nombor ganjil daripada tatasusunan.
- Gunakan kaedah max() untuk mengembalikan nombor ganjil terbesar, jika tiada nombor ganjil, gunakan kaedah orElse() untuk mencetak -1.
Contoh
Dalam contoh ini, kita mula-mula memulakan tatasusunan. Kemudian kami menggunakan kaedah "strim()" untuk menukar tatasusunan kepada strim, kemudian gunakan kaedah "penapis()" pada strim untuk menapis nombor ganjil yang terdapat dalam strim, dan pada strim yang terhasil kami menggunakan maks. () kaedah untuk mencari semua nombor ganjil dalam aliran nilai maksimum. Jika tiada nombor ganjil dalam strim, kami menggunakan fungsi "orElse" untuk mengembalikan nilai parameter input. Kemudian kami mencetak nilai yang disimpan dalam pembolehubah "maximumOdd".
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] array = {1, 7, 2, 3, 9, 5, 10};
int maximumOdd = Arrays.stream(array)
.filter(n -> n % 2 != 0)
.max()
.orElse(-1);
System.out.println("Maximum odd number is: " +maximumOdd);
}
}
Salin selepas log masuk
Output
Maximum odd number is: 9
Salin selepas log masuk
Gunakan kaedah strim(), penapis() dan kurangkan()
- Memulakan tatasusunan dan gunakan kaedah strim() untuk mencipta strim untuk tatasusunan
- Gunakan kaedah penapis() dan parameter sebagai syarat untuk menapis strim untuk menapis nombor ganjil daripada tatasusunan.
- Gunakan kaedah reduce() untuk mencari nombor ganjil terbesar
- Gunakan operator ternary untuk mencetak nombor ganjil terbesar, atau -1 jika tiada nombor ganjil.
Contoh
Dalam contoh ini, kita mula-mula memulakan tatasusunan. Kemudian kami menggunakan kaedah "stream()" untuk menukar tatasusunan kepada strim, kemudian menggunakan kaedah "filter()" pada strim untuk menapis nombor ganjil yang terdapat dalam strim, dan pada strim yang terhasil kami menggunakan pengurangan () kaedah untuk mencari semua nombor ganjil dalam aliran nilai maksimum. Jika tiada nombor ganjil dalam strim, nombor MaximumOdd mengandungi Integer.MIN_VALUE. Kami kemudian menggunakan operasi ternary ‘?’ dan semak sama ada pembolehubah ‘maximumOdd’ mengandungi Integer.MIN_VALUE. Jika ia mengandungi Integer.MIN_VALUE, maka kami mencetak -1, jika tidak, kami mencetak nilai yang disimpan dalam pembolehubah "maximumOdd".
import java.util.*;
public class Main {
public static void main(String[] args) {
int[] array = {1, 7, 2, 3, 9, 5};
int maximumOdd = Arrays.stream(array)
.filter(n -> n % 2 != 0)
.reduce(Integer.MIN_VALUE, Integer::max);
System.out.println("Maximum odd number in the given array is " + (maximumOdd != Integer.MIN_VALUE ? maximumOdd : -1));
}
}
Salin selepas log masuk
Output
Maximum odd number in the given array is 9
Salin selepas log masuk
Jadi, dalam artikel ini, kami telah membincangkan cara mencari nombor ganjil maksimum dalam tatasusunan menggunakan kaedah berbeza menggunakan aliran dan penapis dalam Java.
Atas ialah kandungan terperinci Program Java untuk mencari nombor ganjil maksimum dalam tatasusunan menggunakan aliran dan penapis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!