Mendapatkan Ukuran Iterable di Java

1. Gambaran keseluruhan

Dalam tutorial ringkas ini, kita akan belajar tentang berbagai cara untuk mendapatkan ukuran Iterable di Java.

2. Iterable dan Iterator

Iterable adalah salah satu antara muka utama kelas pengumpulan di Java.

The Collection muka memanjangkan Iterable dan dengan itu semua kelas kanak-kanak Collection juga melaksanakan Iterable .

Iterable hanya mempunyai satu kaedah yang menghasilkan Iterator :

public interface Iterable { public Iterator iterator(); }

Ini Pelelar kemudiannya boleh digunakan untuk melelar elemen dalam Iterable .

3. Saiz Iterable Menggunakan Java Core

3.1. untuk-setiap Gelung

Semua kelas yang menerapkan Iterable layak untuk setiap gelung di Java.

Ini membolehkan kita melonggarkan unsur-unsur dalam Iterable sambil menambah pembilang untuk mendapatkan ukurannya:

int counter = 0; for (Object i : data) { counter++; } return counter;

3.2. Koleksi.saiz ()

Dalam kebanyakan kes, Iterable akan menjadi contoh Koleksi, seperti Daftar atau Set .

Dalam kes sedemikian, kita dapat memeriksa jenis kaedah Iterable dan call size () di atasnya untuk mendapatkan jumlah elemen.

if (data instanceof Collection) { return ((Collection) data).size(); }

Panggilan ke ukuran () biasanya jauh lebih pantas daripada berulang melalui keseluruhan koleksi.

Berikut adalah contoh yang menunjukkan gabungan dua penyelesaian di atas:

public static int size(Iterable data) { if (data instanceof Collection) { return ((Collection) data).size(); } int counter = 0; for (Object i : data) { counter++; } return counter; }

3.3. Stream.count ()

Sekiranya kita menggunakan Java 8, kita dapat membuat Stream dari Iterable.

Objek aliran kemudian dapat digunakan untuk mendapatkan jumlah elemen dalam Iterable .

return StreamSupport.stream(data.spliterator(), false).count();

4. Saiz Boleh Digunakan Menggunakan Perpustakaan Pihak Ketiga

4.1. IterableUtils # saiz ()

The Apache Commons Koleksi perpustakaan mempunyai nice IterableUtils kelas yang menyediakan kaedah utiliti statik untuk Iterable keadaan.

Sebelum memulakan, kita perlu mengimport pergantungan terkini dari Maven Central:

     org.apache.commons     commons-collections4     4.1 

Kita boleh ingat kepada saiz () kaedah IterableUtils pada Iterable objek untuk mendapatkan saiz.

return IterableUtils.size(data);

4.2. Ukuran # Iterables ()

Begitu juga, perpustakaan Jambu Batu Google juga menyediakan koleksi kaedah utiliti statik di kelas Iterables untuk beroperasi pada keadaan Iterable .

Sebelum memulakan, kita perlu mengimport pergantungan terkini dari Maven Central:

     com.google.guava     guava     25.0 

Memohon kaedah ukuran statik () pada kelas Iterables memberi kita bilangan elemen.

return Iterables.size(data);

Di bawah penutup , IterableUtils dan Iterables menggunakan gabungan pendekatan yang dijelaskan dalam 3.1 dan 3.2 untuk menentukan ukurannya.

5. Kesimpulan

Dalam artikel ini, kami melihat berbagai cara untuk mendapatkan ukuran Iterable di Java.

Kod sumber untuk artikel ini dan kes ujian yang berkaitan boleh didapati di GitHub.