Add indexOf method to ArrayMap & ArraySet

Getting the indexOf is useful for doing compound operations
like:

int i = set.indexOf(key);
if (i >= 0) {
    Object o = set.valueAt(i);
    o.blah();
    set.removeAt(i);
}

Change-Id: I3d4b77d1461ba969fc6b4d332d52d4d084b5b53c
This commit is contained in:
Adam Lesinski
2014-08-26 11:53:32 -07:00
parent 5b8e5a7d4c
commit 4e9c07c0de
3 changed files with 29 additions and 8 deletions

View File

@@ -31988,6 +31988,7 @@ package android.util {
method public void ensureCapacity(int);
method public java.util.Set<java.util.Map.Entry<K, V>> entrySet();
method public V get(java.lang.Object);
method public int indexOfKey(java.lang.Object);
method public boolean isEmpty();
method public K keyAt(int);
method public java.util.Set<K> keySet();

View File

@@ -323,7 +323,17 @@ public final class ArrayMap<K, V> implements Map<K, V> {
*/
@Override
public boolean containsKey(Object key) {
return key == null ? (indexOfNull() >= 0) : (indexOf(key, key.hashCode()) >= 0);
return indexOfKey(key) >= 0;
}
/**
* Returns the index of a key in the set.
*
* @param key The key to search for.
* @return Returns the index of the key if it exists, else a negative integer.
*/
public int indexOfKey(Object key) {
return key == null ? indexOfNull() : indexOf(key, key.hashCode());
}
int indexOfValue(Object value) {
@@ -365,7 +375,7 @@ public final class ArrayMap<K, V> implements Map<K, V> {
*/
@Override
public V get(Object key) {
final int index = key == null ? indexOfNull() : indexOf(key, key.hashCode());
final int index = indexOfKey(key);
return index >= 0 ? (V)mArray[(index<<1)+1] : null;
}
@@ -561,7 +571,7 @@ public final class ArrayMap<K, V> implements Map<K, V> {
*/
@Override
public V remove(Object key) {
int index = key == null ? indexOfNull() : indexOf(key, key.hashCode());
final int index = indexOfKey(key);
if (index >= 0) {
return removeAt(index);
}
@@ -747,7 +757,7 @@ public final class ArrayMap<K, V> implements Map<K, V> {
@Override
protected int colIndexOfKey(Object key) {
return key == null ? indexOfNull() : indexOf(key, key.hashCode());
return indexOfKey(key);
}
@Override

View File

@@ -291,7 +291,17 @@ public final class ArraySet<E> implements Collection<E>, Set<E> {
*/
@Override
public boolean contains(Object key) {
return key == null ? (indexOfNull() >= 0) : (indexOf(key, key.hashCode()) >= 0);
return indexOf(key) >= 0;
}
/**
* Returns the index of a value in the set.
*
* @param key The value to search for.
* @return Returns the index of the value if it exists, else a negative integer.
*/
public int indexOf(Object key) {
return key == null ? indexOfNull() : indexOf(key, key.hashCode());
}
/**
@@ -396,7 +406,7 @@ public final class ArraySet<E> implements Collection<E>, Set<E> {
*/
@Override
public boolean remove(Object object) {
int index = object == null ? indexOfNull() : indexOf(object, object.hashCode());
final int index = indexOf(object);
if (index >= 0) {
removeAt(index);
return true;
@@ -586,12 +596,12 @@ public final class ArraySet<E> implements Collection<E>, Set<E> {
@Override
protected int colIndexOfKey(Object key) {
return key == null ? indexOfNull() : indexOf(key, key.hashCode());
return indexOf(key);
}
@Override
protected int colIndexOfValue(Object value) {
return value == null ? indexOfNull() : indexOf(value, value.hashCode());
return indexOf(value);
}
@Override