Untuk mengulangi strim dan indeks akses dengan berkesan, beberapa pendekatan tersedia.
Penyelesaian yang paling bersih ialah mencipta aliran indeks dan menapisnya berdasarkan elemen stream:
String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"}; IntStream.range(0, names.length) .filter(i -> names[i].length() <= i) .mapToObj(i -> names[i]) .collect(Collectors.toList());
Pendekatan ini memastikan senarai yang terhasil hanya mengandungi elemen yang memenuhi kriteria berasaskan indeks.
Alternatif lain ialah dengan mengekalkan pembilang boleh ubah dalam strim:
String[] names = {"Sam", "Pamela", "Dave", "Pascal", "Erik"}; AtomicInteger index = new AtomicInteger(); List<String> list = Arrays.stream(names) .filter(n -> n.length() <= index.incrementAndGet()) .collect(Collectors.toList());
Kaedah ini menyediakan sintaks biasa yang serupa kepada untuk gelung. Walau bagaimanapun, adalah penting untuk ambil perhatian bahawa pendekatan ini berpotensi rosak apabila digunakan pada aliran selari kerana item mungkin tidak diproses mengikut urutan.
Akhirnya, pilihan pendekatan bergantung pada keperluan khusus dan pertimbangan prestasi permohonan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Melalui Strim Java 8 Semasa Mengakses Indeks Unsur?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!