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

com.bmd.android.collection.internal.AbstractSparseIterator Maven / Gradle / Ivy

There is a newer version: 3.0.0
Show newest version
/**
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.bmd.android.collection.internal;

import java.util.NoSuchElementException;

/**
 * Abstract implementation of a {@link com.bmd.android.collection.internal.SparseIterator}.
 * 

* This class implements the common logic leaving to the subclass the handling of low level data. *

* Created by davide on 3/10/14. * * @param The element type. */ abstract class AbstractSparseIterator implements SparseIterator { private final int mTotalCount; private int mCurrPosition; private boolean mHasCurrent; private int mRemoveOffset; public AbstractSparseIterator(final int totalCount) { mTotalCount = totalCount - 1; mCurrPosition = -1; } @Override public boolean hasNext() { return (mCurrPosition < mTotalCount); } @Override public E next() { final E next = getElementAt(++mCurrPosition + mRemoveOffset); mHasCurrent = true; return next; } @Override public void remove() { if (!mHasCurrent) { throw new NoSuchElementException(); } removeElement(); --mRemoveOffset; mHasCurrent = false; } @Override public int originalIndex() { return mCurrPosition; } @Override public void reset() { mCurrPosition = -1; mRemoveOffset = 0; mHasCurrent = false; } protected abstract E getElementAt(int position); protected abstract void removeElement(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy