Rumah >Java >javaTutorial >Bagaimanakah Saya Boleh Mengulang Dengan Cekap Melalui Strim Java 8 dan Indeks Akses?

Bagaimanakah Saya Boleh Mengulang Dengan Cekap Melalui Strim Java 8 dan Indeks Akses?

Susan Sarandon
Susan Sarandonasal
2024-12-27 12:10:10974semak imbas

How Can I Efficiently Iterate Through a Java 8 Stream and Access Indices?

Lelaran Strim yang Cekap dengan Indeks dalam Java 8

Pengenalan

Mengakses indeks semasa mengulang strim dalam Java 8 boleh tugas yang membosankan, terutamanya jika dibandingkan dengan rakan LINQnya. Artikel ini meneroka cara ringkas dan cekap untuk mencapai kefungsian ini.

Penyelesaian Perantaraan

Satu pendekatan ialah menggabungkan aliran indeks dengan aliran elemen, menggunakan kaedah zip. Walau bagaimanapun, kaedah ini telah sama ada dialihkan atau dialih keluar, menjadikan pendekatan ini kurang boleh diakses.

Cara Paling Bersih: Daripada Indeks

Penyelesaian yang lebih diperkemas adalah bermula dengan aliran indeks. Ini boleh dicapai menggunakan IntStream.range() dan menyediakan titik permulaan yang mudah untuk operasi penapisan dan pemetaan:

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());

Menggunakan Indeks Boleh Ubah

Alternatif lain ialah untuk mengekalkan kaunter ad hoc menggunakan objek boleh ubah seperti AtomicInteger. Pendekatan ini menyerupai tradisional untuk gelung:

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());

Awas untuk Aliran Selari

Adalah penting untuk ambil perhatian bahawa menggunakan kaedah terakhir ini pada aliran selari boleh memperkenalkan isu, kerana item mungkin tidak diproses mengikut urutan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengulang Dengan Cekap Melalui Strim Java 8 dan Indeks Akses?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn