Få størrelsen på en Iterabel i Java

1. Oversikt

I denne raske opplæringen lærer vi om de forskjellige måtene vi kan få størrelsen på Iterabel i Java.

2. Iterabel og Iterator

Iterabel er et av hovedgrensesnittene til samlingsklassene i Java.

De Samling grensesnittet utvides Iterabel og dermed alle barneklasser av Samling også implementere Iterabel.

Iterabel har bare en metode som produserer en Iterator:

offentlig grensesnitt Iterabel {public Iterator iterator (); }

Dette Iterator kan deretter brukes til å iterere over elementene i Iterabel.

3. Iterabel størrelse ved hjelp av Core Java

3.1. for hver Løkke

Alle klasser som implementeres Iterabel er kvalifisert for for hver loop i Java.

Dette lar oss løpe over elementene i Iterabel mens du øker en teller for å få størrelsen:

int teller = 0; for (Objekt i: data) {teller ++; } retur teller;

3.2. Collection.size ()

I de fleste tilfeller er Iterabel vil være en forekomst av Samling, som en Liste eller a Sett.

I slike tilfeller kan vi sjekke typen Iterabel og ring størrelse() metode på den for å få antall elementer.

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

Oppfordringen til størrelse() er vanligvis mye raskere enn å gjenta gjennom hele samlingen.

Her er et eksempel som viser kombinasjonen av de to ovennevnte løsningene:

offentlig statisk int-størrelse (Iterable data) {if (data instanceof Collection) {return ((Collection) data) .størrelse (); } int teller = 0; for (Objekt i: data) {teller ++; } retur teller; }

3.3. Stream.count ()

Hvis vi bruker Java 8, kan vi opprette en Strøm fra Iterabel.

Strømobjektet kan deretter brukes til å få antall elementer i Iterabel.

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

4. Iterabel størrelse ved bruk av tredjepartsbiblioteker

4.1. IterableUtils # størrelse ()

De Apache Commons samlinger biblioteket har en fin IterableUtils klasse som gir statiske verktøymetoder for Iterabel tilfeller.

Før vi begynner, må vi importere de siste avhengighetene fra Maven Central:

     org.apache.commons commons-collection4 4.1 

Vi kan påberope oss størrelse() Metode av IterableUtils på en Iterabel objekt for å få størrelsen.

returner IterableUtils.size (data);

4.2. Iterables # størrelse ()

Tilsvarende Google Guava biblioteket gir også en samling av statiske verktøymetoder i sin Iterables klasse å operere på Iterabel tilfeller.

Før vi begynner, må vi importere de siste avhengighetene fra Maven Central:

     com.google.guava guava 25.0 

Påkaller det statiske størrelse() metoden på Iterables klasse gir oss antall elementer.

returner Iterables.size (data);

Under panseret, begge deler IterableUtils og Iterables bruk kombinasjonen av tilnærminger beskrevet i 3.1 og 3.2 for å bestemme størrelsen.

5. Konklusjon

I denne artikkelen så vi på forskjellige måter å få størrelsen på en Iterabel i Java.

Kildekoden for denne artikkelen og de aktuelle testtilfellene er tilgjengelig på GitHub.