Primitive-Collections/src/main/resources/speiger/assets/collections/templates/collections/BidirectionalIterator.template

35 lines
833 B
Plaintext

package speiger.src.collections.PACKAGE.collections;
#if !TYPE_OBJECT
import speiger.src.collections.objects.collections.ObjectBidirectionalIterator;
public interface BI_ITERATOR KEY_GENERIC_TYPE extends ITERATOR KEY_GENERIC_TYPE, ObjectBidirectionalIterator<CLASS_TYPE>
#else
public interface BI_ITERATOR KEY_GENERIC_TYPE extends ITERATOR KEY_GENERIC_TYPE
#endif
{
public boolean hasPrevious();
public KEY_TYPE PREVIOUS();
#if !TYPE_OBJECT
@Override
@Deprecated
public default CLASS_TYPE previous() {
return KEY_TO_OBJ(PREVIOUS());
}
@Override
default int skip(int amount)
{
return ITERATOR.super.skip(amount);
}
#endif
public default int back(int amount) {
if(amount < 0) throw new IllegalStateException("Can't go forward");
int i = 0;
for(;i<amount && hasPrevious();previous(),i++);
return i;
}
}