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

com.bmd.android.collection.iterator.SparseArrayIterable 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.iterator;

import android.os.Parcelable;
import android.util.SparseArray;

import com.bmd.android.collection.entry.IntSparseObjectEntry;
import com.bmd.android.collection.entry.ParcelableIntSparseObjectEntry;
import com.bmd.android.collection.entry.SparseArrayEntry;
import com.bmd.android.collection.filter.Filter;
import com.bmd.android.collection.filter.SparseArrayFilterBuilder;
import com.bmd.android.collection.translator.IntTranslator;
import com.bmd.android.collection.translator.Translator;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Map;
import java.util.SortedMap;

/**
 * This interface extends the {@link com.bmd.android.collection.iterator.SparseIterable} one
 * by adding specific methods handling
 * {@link com.bmd.android.collection.entry.SparseArrayEntry} elements.
 * 

* Created by davide on 3/10/14. * * @param The element value type. */ public interface SparseArrayIterable extends SparseIterable> { /** * Appends all the elements returned by this iterable to the specified sparse collection. * * @param other The sparse collection to append the elements to. * @return This iterable. */ public SparseArrayIterable appendTo(SparseArray other); @Override public SparseArrayFilterBuilder but(); @Override public SparseArrayIterable but(Filter> filter); @Override public SparseArrayIterable doWhile(Condition> condition); @Override public SparseArrayIterable forEach(Action> action); @Override public SparseArrayFilterBuilder only(); @Override public SparseArrayIterable only(Filter> filter); @Override public SparseArrayIterable remove(); @Override public SparseArrayIterable retain(); @Override public SparseArrayIterable reverse(); /** * Checks if all the specified keys are present in the iterated elements. * * @param keys The keys to search for. * @return Whether all the keys are present. */ public boolean containsAllKeys(int... keys); /** * Checks if all the keys returned by the specified iterable are present in the iterated * elements. * * @param keys The keys to search for. * @return Whether all the keys are present. */ public boolean containsAllKeys(Iterable keys); /** * Checks if all the specified value objects are present in the iterated elements. * * @param values The values to search for. * @return Whether all the values are present. */ public boolean containsAllValues(Object... values); /** * Checks if all the values returned by the specified iterable are present in the iterated * elements. * * @param values The values to search for. * @return Whether all the values are present. */ public boolean containsAllValues(Iterable values); /** * Checks if at least one of the specified keys is present in the iterated elements. * * @param keys The keys to search for. * @return Whether at least one key is present. */ public boolean containsAnyKey(int... keys); /** * Checks if at least one of the keys returned by the specified iterable is present in the * iterated elements. * * @param keys The keys to search for. * @return Whether at least one key is present. */ public boolean containsAnyKey(Iterable keys); /** * Checks if at least one of the specified values is present in the iterated elements. * * @param values The values to search for. * @return Whether at least one value is present. */ public boolean containsAnyValue(Object... values); /** * Checks if at least one of the values returned by the specified iterable is present in the * iterated elements. * * @param values The values to search for. * @return Whether at least one value is present. */ public boolean containsAnyValue(Iterable values); /** * Checks if the specified key is present in the iterated elements. * * @param key The key to search for. * @return Whether the key is present. */ public boolean containsKey(int key); /** * Checks if the specified value is present in the iterated elements. * * @param value The value to search for. * @return Whether the value is present. */ public boolean containsValue(Object value); /** * Fills the specified map with the elements returned by this iterable, in the iteration * order. * * @param map The map to fill. * @return This iterable. */ public SparseArrayIterable fill(Map map); /** * Fills the specified collection with an immutable copy of the elements returned by this * iterable, in the iteration order. * * @param collection The collection to fill. * @return This iterable. */ public SparseArrayIterable fillImmutable( Collection> collection); /** * Fills the specified array with an immutable copy of the elements returned by this * iterable, in the iteration order. *

* Note that, if the immutable copy of the elements returned by the iterable cannot be cast to * the array elements type, a {@link java.lang.ClassCastException} will be thrown. *

* Note also that, in case the array is not big enough to contain all the elements, an * {@link java.lang.IndexOutOfBoundsException} will be thrown. * * @param array The array to fill. * @param The array element type. * @return This iterable. */ public SparseArrayIterable fillImmutable(T[] array); /** * Fills the specified array with an immutable copy of the elements returned by this * iterable, in the iteration order, starting from the specified offset inside the array. *

* Note that, if the immutable copy of the elements returned by the iterable cannot be cast to * the array elements type, a {@link java.lang.ClassCastException} will be thrown. *

* Note also that, in case the array is not big enough to contain all the elements, an * {@link java.lang.IndexOutOfBoundsException} will be thrown. * * @param array The array to fill. * @param offset The offset from which to start filling the array. * @param The array element type. * @return This iterable. */ public SparseArrayIterable fillImmutable(T[] array, int offset); /** * Fills the specified array with a parcelable copy of the elements returned by this * iterable, in the iteration order. *

* Note that, if the immutable copy of the elements returned by the iterable cannot be cast to * the array elements type, a {@link java.lang.ClassCastException} will be thrown. *

* Note also that, in case the array is not big enough to contain all the elements, an * {@link java.lang.IndexOutOfBoundsException} will be thrown. * * @param array The array to fill. * @param The array element type. * @return This iterable. */ public SparseArrayIterable fillParcelable(T[] array); /** * Fills the specified array with a parcelable copy of the elements returned by this * iterable, in the iteration order, starting from the specified offset inside the array. *

* Note that, if the immutable copy of the elements returned by the iterable cannot be cast to * the array elements type, a {@link java.lang.ClassCastException} will be thrown. *

* Note also that, in case the array is not big enough to contain all the elements, an * {@link java.lang.IndexOutOfBoundsException} will be thrown. * * @param array The array to fill. * @param offset The offset from which to start filling the array. * @param The array element type. * @return This iterable. */ public SparseArrayIterable fillParcelable(T[] array, int offset); /** * Fills the specified collection with a parcelable copy of the elements returned by this * iterable, in the iteration order. * * @param collection The collection to fill. * @return This iterable. */ public SparseArrayIterable fillParcelable( Collection> collection); /** * Finds the index of the first element value, in the iteration order, equals to the specified * one. * * @param value The value to search for. * @return The index in the iteration, or -1 if the object is not found. */ public int firstIndexOfValue(Object value); /** * Finds the position of the first element value, in the iteration order, equal to the specified * one. *

* Note that the returned value is relative to the iterator cycles so, in case filters has been * applied to this iterable, the returned number might not match with the index in the sparse * collection. * * @param value The value to search for. * @return The position in the iteration, or -1 if the object is not found. */ public int firstPositionOfValue(Object value); /** * Finds the index of the specified key in the iteration order. * * @param key The key to search for. * @return The index in the iteration, or -1 if the object is not found. */ public int indexOfKey(int key); /** * Checks if all and only the elements returned by the this iterable are contained in the * specified sparse collection. * * @param array The sparse collection to compare. * @return Whether the specified collection equals this iterable. */ boolean isEqualTo(SparseArray array); /** * Checks if all and only the elements returned by the this iterable are contained in the * specified map. * * @param map The map to compare. * @return Whether the specified map equals this iterable. */ boolean isEqualTo(Map map); /** * Returns this iterable elements keys as a * {@link com.bmd.android.collection.iterator.IntSparseIterable} object. *

* Note that, every filter added since the call to this function, will be also applied to the * returned iterable. * * @return The keys iterable. */ public IntSparseIterable keys(); /** * Finds the position of the specified key in the iteration order. *

* Note that the returned value is relative to the iterator cycles so, in case filters has been * applied to this iterable, the returned number might not match with the index in the sparse * collection. * * @param key The key to search for. * @return The position in the iteration, or -1 if the object is not found. */ public int positionOfKey(int key); /** * Puts all the elements returned by this iterable into the specified sparse collection. * * @param other The sparse collection to add the elements into. * @return This iterable. */ public SparseArrayIterable putInto(SparseArray other); /** * Replaces the element values returned by this iterable with the ones obtained through the * specified translator. *

* Note that the replacement will happen in place, and the same key corresponding to each * element will be retained. * * @param translator The value translator. * @return This iterable. */ public SparseArrayIterable replaceValues(Translator translator); /** * Creates and returns a new array filled with an immutable copy of the elements returned by * this iterable, in the iteration order. *

* Note that, if the immutable copy of the elements returned by the iterable cannot be cast to * the array elements type, a {@link java.lang.ClassCastException} will be thrown. * * @param type The array element class. * @param The array element type. * @return The new array. */ public T[] toImmutableArray(Class type); /** * Creates and returns a new list filled with an immutable copy of the elements returned by * this iterable, in the iteration order. * * @return The new list. */ public ArrayList> toImmutableList(); /** * Creates and returns a new map filled with the elements key and values returned by this * iterable, in the iteration order. * * @return The new array. */ public Map toMap(); /** * Creates and returns a new array filled with a parcelable copy of the elements returned by * this iterable, in the iteration order. *

* Note that, if the parcelable copy of the elements returned by the iterable cannot be cast to * the array elements type, a {@link java.lang.ClassCastException} will be thrown. * * @param type The array element class. * @param The array element type. * @return The new array. */ public T[] toParcelableArray(Class type); /** * Creates and returns a new list filled with an immutable copy of the elements returned by * this iterable, in the iteration order. * * @return The new list. */ public ArrayList> toParcelableList(); /** * Creates and returns a new sorted map filled with the elements key and values returned by * this iterable, in the iteration order. * * @return The new array. * @see java.util.SortedMap */ public SortedMap toSortedMap(); /** * Returns a new {@link android.util.SparseArray} collection filled with the keys and values * returned by this iterable. * * @return The new collection instance. */ public SparseArray toSparseArray(); /** * Returns a new iterable whose elements are the same as this ones but translated through the * specified translators. *

* Note that, in case the passed translator is not bidirectional, every attempt to modify the * returned iterable elements will cause an exception to be thrown. * Note also that all the filters and the iteration order are retained in the translation. * * @param keyTranslator The translator used to convert the element key. * @param valueTranslator The translator used to convert the element value. * @param The new iterable element value type. * @return The new iterable. */ public SparseArrayIterable translate(IntTranslator keyTranslator, Translator valueTranslator); /** * Returns a new iterable whose elements are the same as this ones but the keys are translated * through the specified translator. *

* Note that, in case the passed translator is not bidirectional, every attempt to modify the * returned iterable elements will cause an exception to be thrown. * Note also that all the filters and the iteration order are retained in the translation. * * @param keyTranslator The translator used to convert the element key. * @return The new iterable. */ public SparseArrayIterable translateKeys(IntTranslator keyTranslator); /** * Returns a new iterable whose elements are the same as this ones but the values are translated * through the specified translator. *

* Note that, in case the passed translator is not bidirectional, every attempt to modify the * returned iterable elements will cause an exception to be thrown. * Note also that all the filters and the iteration order are retained in the translation. * * @param valueTranslator The translator used to convert the element value. * @param The new iterable element value type. * @return The new iterable. */ public SparseArrayIterable translateValues(Translator valueTranslator); /** * Returns this iterable elements values as a * {@link com.bmd.android.collection.iterator.ElementSparseIterable} object. *

* Note that, every filter added since the call to this function, will be also applied to the * returned iterable. * * @return The values iterable. */ public ElementSparseIterable values(); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy