Memandangkan aliran nilai primitif atau objek, tugas timbul untuk mengubahnya menjadi aliran pasangan, di mana setiap pasangan terdiri dua elemen berturut-turut daripada aliran asal. Sebagai contoh, memandangkan strim {0, 1, 2, 3, 4}, output yang dikehendaki ialah:
{ new Pair(0, 1), new Pair(1, 2), new Pair(2, 3), new Pair(3, 4) }
Analisis
Strim Java 8 perpustakaan cemerlang dalam membahagikan aliran kepada bahagian yang lebih kecil untuk pemprosesan selari. Walau bagaimanapun, ia menawarkan sokongan terhad untuk peringkat saluran paip stateful, menjadikannya mencabar untuk mengakses elemen aliran bersebelahan dan mendapatkan indeks elemen semasa.
Penyelesaian
Untuk mengatasinya pengehadan, kami boleh memanfaatkan pendekatan diindeks di mana kami memacu strim menggunakan indeks. Ini memerlukan nilai untuk disimpan dalam struktur data capaian rawak seperti ArrayList, dari mana elemen boleh diambil dengan mudah. Dengan nilai dalam ArrayList, kita boleh membina pasangan seperti berikut:
IntStream.range(1, arrayList.size()) .mapToObj(i -> new Pair(arrayList.get(i-1), arrayList.get(i))) .forEach(System.out::println);
Perhatikan bahawa pendekatan ini mempunyai kekangan yang memerlukan input menjadi aliran terhingga. Walau bagaimanapun, saluran paip boleh dilaksanakan secara selari.
Atas ialah kandungan terperinci Bagaimana untuk Mencipta Pasangan Berturut-turut dengan Cekap daripada Strim Data di Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!