@SuppressWarnings("unchecked") @Override public <V> V getValue(final String key) { final int index = indexOfKey(key); if (index < 0) { return null; } return (V) values[index]; }
@Override public boolean containsKey(final String key) { return indexOfKey(key) >= 0; }
@Override public void remove(final String key) { if (keys == EMPTY) { return; } final int index = indexOfKey(key); if (index >= 0) { assertNotFrozen(); assertNoConcurrentModification(); System.arraycopy(keys, index + 1, keys, index, size - 1 - index); System.arraycopy(values, index + 1, values, index, size - 1 - index); keys[size - 1] = null; values[size - 1] = null; size--; } }
final int index = indexOfKey(keys[i]); if (index < 0) { // key does not exist insertAt(~index, keys[i], values[i]);
@Override public void putValue(final String key, final Object value) { assertNotFrozen(); assertNoConcurrentModification(); if (keys == EMPTY) { inflateTable(threshold); } final int index = indexOfKey(key); if (index >= 0) { keys[index] = key; values[index] = value; } else { // not found, so insert. insertAt(~index, key, value); } }
final SortedArrayStringMap original = new SortedArrayStringMap(); original.putValue("a", "avalue"); assertEquals(0, original.indexOfKey("a")); assertEquals(1, original.indexOfKey("a")); assertEquals(0, original.indexOfKey("B")); assertEquals(2, original.indexOfKey("a")); assertEquals(1, original.indexOfKey("B")); assertEquals(0, original.indexOfKey("3")); assertEquals(3, original.indexOfKey("a")); assertEquals(2, original.indexOfKey("B")); assertEquals(1, original.indexOfKey("A")); assertEquals(0, original.indexOfKey("3")); assertEquals(4, original.indexOfKey("a")); assertEquals(3, original.indexOfKey("C")); assertEquals(2, original.indexOfKey("B")); assertEquals(1, original.indexOfKey("A")); assertEquals(0, original.indexOfKey("3")); assertEquals(5, original.indexOfKey("a")); assertEquals(4, original.indexOfKey("C")); assertEquals(3, original.indexOfKey("B")); assertEquals(2, original.indexOfKey("A")); assertEquals(1, original.indexOfKey("3")); assertEquals(0, original.indexOfKey("2"));
@SuppressWarnings("unchecked") @Override public <V> V getValue(final String key) { final int index = indexOfKey(key); if (index < 0) { return null; } return (V) values[index]; }
@Override public boolean containsKey(final String key) { return indexOfKey(key) >= 0; }
@Override public void remove(final String key) { if (keys == EMPTY) { return; } final int index = indexOfKey(key); if (index >= 0) { assertNotFrozen(); assertNoConcurrentModification(); System.arraycopy(keys, index + 1, keys, index, size - 1 - index); System.arraycopy(values, index + 1, values, index, size - 1 - index); keys[size - 1] = null; values[size - 1] = null; size--; } }
final int index = indexOfKey(keys[i]); if (index < 0) { // key does not exist insertAt(~index, keys[i], values[i]);
@Override public void putValue(final String key, final Object value) { assertNotFrozen(); assertNoConcurrentModification(); if (keys == EMPTY) { inflateTable(threshold); } final int index = indexOfKey(key); if (index >= 0) { keys[index] = key; values[index] = value; } else { // not found, so insert. insertAt(~index, key, value); } }