Pengalaman pertama aliran
Stream adalah fitur penting dari koleksi operasi di Java 8. Mari kita lihat pertama bagaimana aliran didefinisikan dalam Java:
"Urutan elemen yang mendukung operasi agregat berurutan dan paralel."
Mari kita menafsirkan kalimat di atas:
1. Stream adalah kumpulan elemen, yang membuat aliran terlihat seperti iterator;
2. Ini dapat mendukung operasi agregasi aliran asli secara berurutan dan paralel.
Ada banyak cara untuk membuat aliran, dan ada beberapa cara lain untuk membuat koleksi selain yang paling umum.
Daftar untuk streaming
Daftar warisan dari antarmuka koleksi, dan koleksi menyediakan metode stream ().
Daftar <Integer> list = lists.newarraylist (1, 2, 3); stream <integer> stream = list.stream ();
Array untuk streaming
Untuk array, array menyediakan metode stream ().
String [] arr = string baru [] {"a", "b", "c"}; stream <string> stream = arrays.stream (arr); Peta untuk streaming
Peta bukan urutan, bukan koleksi, dan tidak ada cara untuk mengubahnya langsung menjadi stream (). Tetapi entryset () diatur, dan dapat dikonversi.
Peta <String, Object> MAP = Maps.NewHashMap (); Stream <Entry <String, Object >> Stream = MAP.ENTRYSET (). Stream ();
Buat stream secara langsung
Stream juga menyediakan API untuk secara langsung menghasilkan aliran, yang dapat dipahami secara kasar sebagai daftar. Karena internal diimplementasikan oleh array.
Stream <Integer> integerstream = stream.of (1, 2, 3);
Baca aliran file
Mereka yang telah menggunakan Linux akan mengagumi simbol pipa pada baris perintah, dan simbol pipa dapat diproses terus menerus. Fungsi serupa dapat diimplementasikan saat membaca file di Java.
long uniquewords = 0; coba (stream <string> lines = file.lines (paths.get ("data.txt"), charset.defaultCharset ())) {uniquewords = lines.flatmap (l -> arrays.stream (l.split (")))) .distinct () .count (); Menghasilkan aliran tak terbatas melalui fungsi
Stream memberikan iterate untuk menghasilkan urutan tak terbatas, urutan tak terbatas berdasarkan nilai awal. Anda dapat menggunakan lambda untuk mengatur aturan pembuatan urutan, seperti menambahkan 2 setiap kali.
Stream.iterate (0, n -> n + 2) .Limit (10) .foreach (System.out :: println);
Misalnya, urutan fibonacci
Stream.iterate (int baru [] {0, 1}, t -> int baru [] {t [1], t [0] + t [1]}) .limit (20) .map (t -> t [0]) .foreach (System.out :: println); Stream juga menyediakan metode menghasilkan lain untuk menghasilkan urutan. Menerima fungsi urutan urutan yang ditentukan pengguna.
Intsupplier fib = intsupplier baru () {private int sebelumnya = 0; Private int Current = 1; @Override public int getasint () {int oldprevious = this.previous; int nextValue = this.previous + this.current; this.previous = this.current; this.current = nextValue; kembali tua; }}; Intstream.generate (fib) .limit (10) .foreach (System.out :: println);Meringkaskan
Di atas adalah seluruh konten artikel ini. Saya berharap konten artikel ini memiliki nilai referensi tertentu untuk studi atau pekerjaan semua orang. Jika Anda memiliki pertanyaan, Anda dapat meninggalkan pesan untuk berkomunikasi. Terima kasih atas dukungan Anda ke wulin.com.