Terokai buku Amazon saya dan ikuti saya di Medium untuk mendapatkan lebih banyak cerapan! Sokongan anda amat dihargai.
API Stream Java telah merevolusikan pemprosesan data. Artikel ini meneroka enam teknik lanjutan untuk meningkatkan kecekapan dan kejelasan kod.
Arus Selari: Akta Pengimbangan Prestasi
Strim selari menjanjikan pemprosesan yang lebih pantas, terutamanya dengan set data yang besar. Walau bagaimanapun, overhed pengurusan benang boleh menafikan faedah dengan set data yang lebih kecil atau operasi yang kompleks. Penandaarasan adalah penting; jangan menganggap selari sentiasa meningkatkan kelajuan. Pertimbangkan saiz data, kerumitan operasi dan keupayaan perkakasan. Contoh berikut menunjukkan senario di mana aliran selari cemerlang:
List<Integer> numbers = IntStream.rangeClosed(1, 10_000_000).boxed().collect(Collectors.toList()); long startTime = System.currentTimeMillis(); long count = numbers.parallelStream() .filter(n -> n % 2 == 0) .count(); long endTime = System.currentTimeMillis(); System.out.println("Parallel stream took: " + (endTime - startTime) + " ms"); startTime = System.currentTimeMillis(); count = numbers.stream() .filter(n -> n % 2 == 0) .count(); endTime = System.currentTimeMillis(); System.out.println("Sequential stream took: " + (endTime - startTime) + " ms");
Pengumpul Tersuai: Membuat Agregasi Diperibadikan
Pengumpul tersuai mendayakan pengagregatan kompleks melangkaui pilihan terbina dalam. Contohnya, mengumpulkan transaksi mengikut tarikh semasa mengira jumlah berjalan memerlukan pengumpul tersuai:
class Transaction { LocalDate date; double amount; // constructor and getters } public class RunningTotalCollector implements Collector<Transaction, Map<LocalDate, Double>, Map<LocalDate, Double>> { // ... (Implementation as in original text) }
Pendekatan ini memperkemas pengagregatan kompleks menjadi satu pas.
Strim Infinite: Memodelkan Data Berterusan
Strim tak terhingga sesuai untuk menjana jujukan atau mensimulasikan data masa nyata. Menjana ID unik atau mensimulasikan harga saham ialah contoh terbaik:
AtomicLong idGenerator = new AtomicLong(); Stream<Long> ids = Stream.generate(idGenerator::incrementAndGet); // ... (Usage as in original text)
Strim ini memodelkan proses berterusan secara elegan.
Menggabungkan Strim: Mengharmonikan Sumber Data
Stream.concat()
menggabungkan strim daripada pelbagai sumber, manakala flatMap()
mengendalikan struktur bersarang dengan cekap. Ini penting untuk senario dunia sebenar yang melibatkan sumber data yang pelbagai:
Stream<User> activeUsers = getActiveUsersStream(); Stream<User> inactiveUsers = getInactiveUsersStream(); Stream<User> allUsers = Stream.concat(activeUsers, inactiveUsers); // ... (Processing as in original text)
Litar Pintas: Mengutamakan Keputusan Awal
findFirst()
dan anyMatch()
amat berharga untuk mengoptimumkan carian dalam set data yang besar. Mereka menamatkan pemprosesan apabila mencari padanan, meningkatkan prestasi dengan ketara:
Optional<User> user = users.stream() .filter(u -> u.getUsername().equals(inputUsername) && u.getPassword().equals(inputPassword)) .findFirst();
Operasi Perantaraan Negeri: Aplikasi Strategik
Operasi berstatus seperti sorted()
dan distinct()
boleh menjadi mahal dari segi pengiraan. Pertimbangkan pendekatan alternatif seperti pra-isih koleksi atau menggunakan Set untuk elemen yang berbeza apabila boleh dilaksanakan.
Kesimpulan
101 Buku adalah penerbit yang didorong oleh AI yang diasaskan oleh Aarav Joshi, yang menawarkan pengetahuan berkualiti yang berpatutan. Semak "Golang Clean Code" di Amazon dan cari Aarav Joshi untuk lebih banyak tajuk dan diskaun khas.
Pusat Pelabur, Pusat Pelabur (Sepanyol/Jerman), Smart Living, Epochs & Echoes, Misteri yang membingungkan, Hindutva, Elite Dev, JS Schools.
Tech Koala Insights, Epochs & Echoes World, Investor Central Medium, Medium Misteri Medium, Sains & Epochs Medium, Hindutva Moden.
Atas ialah kandungan terperinci Menguasai Java Stream API: Teknik lanjutan untuk Pemprosesan Data Cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!