Рубрики
Без рубрики

Получение размера итерации в Java

Изучите различные способы получения размера итерации в Java

Автор оригинала: baeldung.

1. Обзор

В этом кратком руководстве мы узнаем о различных способах, с помощью которых мы можем получить размер Iterable в Java.

2. Итерируемый и итератор

Итерируемый является одним из основных интерфейсов классов коллекций в Java.

Интерфейс Collection расширяет Iterable и, следовательно, все дочерние классы Collection также реализуют Iterable .

Iterable имеет только один метод, который создает Итератор :

public interface Iterable {
    public Iterator iterator();    
}

Этот Итератор затем можно использовать для перебора элементов в Iterable .

3. Итерационный Размер С Использованием Ядра Java

3.1. для каждого цикла

Все классы, которые реализуют Итерируемый имеют право на для-каждого цикл в Java.

Это позволяет нам перебирать элементы в Iterable , увеличивая счетчик, чтобы получить его размер:

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

3.2. Размер коллекции()

В большинстве случаев Итерируемый будет примером Коллекция, например, Список или Набор .

В таких случаях мы можем проверить тип Iterable и вызвать на нем метод size () , чтобы получить количество элементов.

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

Вызов size() обычно выполняется намного быстрее, чем итерация по всей коллекции.

Вот пример, показывающий комбинацию двух вышеупомянутых решений:

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. Поток.Количество()

Если мы используем Java 8, мы можем создать Течение из Повторяемость.

Затем объект stream можно использовать для получения количества элементов в Iterable .

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

4. Итерационный Размер С Использованием Сторонних Библиотек

4.1. Размер IterableUtils#()

То Коллекции Apache Commons в библиотеке есть хороший IterableUtils класс, предоставляющий статические служебные методы для Итерируемый экземпляры.

Прежде чем мы начнем, нам нужно импортировать последние зависимости из Maven Central :


    org.apache.commons
    commons-collections4
    4.1

Мы можем вызвать size() метод IterableUtils на объекте Iterable , чтобы получить его размер.

return IterableUtils.size(data);

4.2. Размер итераций#()

Аналогично, Гугл Гуава библиотека также предоставляет коллекцию статических служебных методов в своем Итерабельные класс для работы Итерируемый экземпляры.

Прежде чем мы начнем, нам нужно импортировать последние зависимости из Maven Central :


    com.google.guava
    guava
    25.0

Вызов статического метода size() в классе Iterables дает нам количество элементов.

return Iterables.size(data);

Под капотом оба IterableUtils и Iterables используют комбинацию подходов, описанных в 3.1 и 3.2, для определения размера.

5. Заключение

В этой статье мы рассмотрели различные способы получения размера Iterable в Java.

Исходный код этой статьи и соответствующие тестовые примеры доступны на GitHub .