All Downloads are FREE. Search and download functionalities are using the official Maven repository.

net.digitalid.utility.functional.iterables.CollectionIterable Maven / Gradle / Ivy

The newest version!
package net.digitalid.utility.functional.iterables;

import net.digitalid.utility.annotations.generics.Specifiable;
import net.digitalid.utility.annotations.method.Pure;
import net.digitalid.utility.validation.annotations.math.NonNegative;
import net.digitalid.utility.validation.annotations.math.Positive;
import net.digitalid.utility.validation.annotations.type.ReadOnly;

/**
 * This interface extends the finite iterable interface to provide a faster {@link #size()} implementation.
 * 
 * @see CollectionBasedIterable
 */
@ReadOnly
public interface CollectionIterable<@Specifiable ELEMENT> extends FiniteIterable {
    
    /* -------------------------------------------------- Size -------------------------------------------------- */
    
    @Pure
    @Override
    public default boolean isEmpty() {
        return size() == 0;
    }
    
    @Pure
    @Override
    public default @NonNegative int size(@Positive int limit) {
        return Math.min(size(), limit);
    }
    
    @Pure
    @Override
    public @NonNegative int size();
    
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy