Saya baru saja menemukan kemampuan Java 8 stream yang baru. Berasal dari Python, saya bertanya-tanya apakah sekarang ada cara yang rapi untuk melakukan operasi pada array seperti menjumlahkan, mengalikan dua array dalam cara "satu baris pythonic"?
Terima kasih
java
arrays
java-8
java-stream
BlackLabrador
sumber
sumber
int[] result=IntStream.range(0, a.length).map( i->a[i]* b[i]).toArray();
mapToInt
untuk menghindari tinju.Anda dapat mengubah array menjadi aliran dengan menggunakan
Arrays.stream()
:Setelah Anda mendapatkan aliran Anda, Anda dapat menggunakan salah satu metode yang dijelaskan dalam dokumentasi , seperti
sum()
atau apa pun. Anda bisamap
ataufilter
suka dengan Python dengan memanggil metode stream yang relevan dengan fungsi Lambda:Setelah selesai memodifikasi aliran Anda, Anda kemudian menelepon
toArray()
untuk mengubahnya kembali menjadi array untuk digunakan di tempat lain:sumber
Hati-hati jika harus berhadapan dengan jumlah besar.
Jumlah di atas tidak
2 * Integer.MIN_VALUE
. Anda perlu melakukan ini dalam hal ini.sumber
Harap perhatikan bahwa Arrays.stream (arr) membuat LongStream (atau IntStream, ...) alih-alih Stream sehingga fungsi peta tidak dapat digunakan untuk memodifikasi tipe. Inilah mengapa fungsi .mapToLong, mapToObject, ... disediakan.
Lihatlah mengapa-cant-i-map-integers-to-string-saat-streaming-dari-an-array
sumber