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:
@@ -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();
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user