Få størrelsen på en itterabel i Java

1. Oversigt

I denne hurtige vejledning lærer vi om de forskellige måder, hvorpå vi kan få størrelsen på en Iterabel i Java.

2. Iterabel og Iterator

Iterabel er en af ​​de vigtigste grænseflader for samlingsklasserne i Java.

Det Kollektion interface udvides Iterabel og dermed alle børneklasser af Kollektion også implementere Iterabel.

Iterabel har kun en metode, der producerer en Iterator:

offentlig grænseflade Iterabel {public Iterator iterator (); }

Det her Iterator kan derefter bruges til at gentage elementerne i Iterabel.

3. Iterabel størrelse ved hjælp af Core Java

3.1. for hver Sløjfe

Alle klasser, der implementeres Iterabel er berettiget til for hver loop i Java.

Dette giver os mulighed for at løbe over elementerne i Iterabel mens du øger en tæller for at få dens størrelse:

int tæller = 0; for (Objekt i: data) {tæller ++; } retur tæller;

3.2. Collection.size ()

I de fleste tilfælde er Iterabel vil være en forekomst af Kollektion, såsom en Liste eller a Sæt.

I sådanne tilfælde kan vi kontrollere typen af Iterabel og ring størrelse() metode til at få antallet af elementer.

if (data instanceof Collection) {return ((Collection) data) .størrelse (); }

Opkaldet til størrelse() er normalt meget hurtigere end at gentage gennem hele samlingen.

Her er et eksempel, der viser kombinationen af ​​ovenstående to løsninger:

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

3.3. Stream.count ()

Hvis vi bruger Java 8, kan vi oprette en Strøm fra Iterabel.

Stream-objektet kan derefter bruges til at få antallet af elementer i Iterabel.

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

4. Iterabel størrelse ved hjælp af tredjepartsbiblioteker

4.1. IterableUtils # størrelse ()

Det Apache Commons samlinger biblioteket har en dejlig IterableUtils klasse, der giver statiske hjælpemetoder til Iterabel tilfælde.

Før vi starter, skal vi importere de nyeste afhængigheder fra Maven Central:

     org.apache.commons commons-collection4 4.1 

Vi kan påberåbe os størrelse() metode til IterableUtils på en Iterabel modstand for at få sin størrelse.

returner IterableUtils.size (data);

4.2. Iterables # størrelse ()

Tilsvarende er Google Guava biblioteket giver også en samling af statiske hjælpemetoder i sin Iterables klasse at operere på Iterabel tilfælde.

Før vi starter, skal vi importere de nyeste afhængigheder fra Maven Central:

     com.google.guava guava 25.0 

Påkald af det statiske størrelse() metode til Iterables klasse giver os antallet af elementer.

returner Iterables.size (data);

Under hætten begge IterableUtils og Iterables Brug kombinationen af ​​fremgangsmåder beskrevet i 3.1 og 3.2 til at bestemme størrelsen.

5. Konklusion

I denne artikel så vi på forskellige måder at få størrelsen på et Iterabel i Java.

Kildekoden til denne artikel og de relevante testtilfælde findes på GitHub.