Ermitteln der Größe eines Iterables in Java

1. Übersicht

In diesem kurzen Tutorial lernen wir die verschiedenen Möglichkeiten kennen, wie wir die Größe eines Iterables in Java ermitteln können.

2. Iterable und Iterator

Iterable ist eine der Hauptschnittstellen der Auflistungsklassen in Java.

Die Collection- Schnittstelle erweitert Iterable, und daher implementieren alle untergeordneten Collection- Klassen auch Iterable .

Iterable hat nur eine Methode, die einen Iterator erzeugt :

public interface Iterable { public Iterator iterator(); }

Dieser Iterator kann dann verwendet werden, um die Elemente in der Iterable zu durchlaufen .

3. Iterierbare Größe mit Core Java

3.1. für jede Schleife

Alle Klassen, die Iterable implementieren, sind für die for-each- Schleife in Java berechtigt .

Auf diese Weise können wir die Elemente in der Iterable durchlaufen, während wir einen Zähler erhöhen , um seine Größe zu erhalten:

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

3.2. Collection.size ()

In den meisten Fällen ist die Iterable eine Instanz der Sammlung, z. B. eine Liste oder ein Satz .

In solchen Fällen können wir den Typ der Iterable- und call size () -Methode überprüfen , um die Anzahl der Elemente zu ermitteln.

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

Der Aufruf von size () ist normalerweise viel schneller als das Durchlaufen der gesamten Sammlung.

Hier ist ein Beispiel, das die Kombination der beiden oben genannten Lösungen zeigt:

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

Wenn wir Java 8 verwenden, können wir aus dem Iterable einen Stream erstellen.

Das Stream-Objekt kann dann verwendet werden, um die Anzahl der Elemente in der Iterable abzurufen .

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

4. Iterierbare Größe mithilfe von Bibliotheken von Drittanbietern

4.1. IterableUtils # size ()

Die Apache Commons Collections- Bibliothek verfügt über eine nette IterableUtils- Klasse, die statische Dienstprogrammmethoden für Iterable- Instanzen bereitstellt .

Bevor wir beginnen, müssen wir die neuesten Abhängigkeiten aus Maven Central importieren:

     org.apache.commons     commons-collections4     4.1 

Wir können die size () -Methode von IterableUtils für ein Iterable- Objekt aufrufen , um dessen Größe zu ermitteln.

return IterableUtils.size(data);

4.2. Iterables # size ()

In ähnlicher Weise bietet die Google Guava- Bibliothek auch eine Sammlung statischer Dienstprogrammmethoden in ihrer Iterables- Klasse, um Iterable- Instanzen zu bearbeiten .

Bevor wir beginnen, müssen wir die neuesten Abhängigkeiten aus Maven Central importieren:

     com.google.guava     guava     25.0 

Wenn Sie die statische size () -Methode für die Iterables- Klasse aufrufen , erhalten Sie die Anzahl der Elemente.

return Iterables.size(data);

Unter der Haube verwenden sowohl IterableUtils als auch Iterables die in 3.1 und 3.2 beschriebene Kombination von Ansätzen, um die Größe zu bestimmen.

5. Schlussfolgerung

In diesem Artikel haben wir uns verschiedene Möglichkeiten angesehen, um die Größe eines Iterables in Java zu ermitteln.

Der Quellcode für diesen Artikel und die relevanten Testfälle sind auf GitHub verfügbar.