@Override public boolean containsKey(Object key) { return findKey(key) >= 0; }
@SuppressWarnings("unchecked") @Override public V get(Object key) { int kIdx = findKey(key); return kIdx < 0 ? null : (V) mapArr[kIdx+1]; }
@Override public V remove(Object key) { int kIdx = findKey(key); if (kIdx < 0) { // not found return null; } @SuppressWarnings("unchecked") V oldValue = (V) mapArr[kIdx+1]; int oldLen = mapArr.length; if (oldLen == 2) { // was last entry mapArr = null; } else { Object[] newMapArr = new Object[oldLen-2]; System.arraycopy(mapArr, 0, newMapArr, 0, kIdx); System.arraycopy(mapArr, kIdx+2, newMapArr, kIdx, oldLen - kIdx - 2); mapArr = newMapArr; } return oldValue; }
int kIdx = findKey(key);
int existKeyIdx = findKey(entry.getKey());
@Override public boolean containsKey(Object key) { return findKey(key) >= 0; }
@SuppressWarnings("unchecked") @Override public V get(Object key) { int kIdx = findKey(key); return kIdx < 0 ? null : (V) mapArr[kIdx+1]; }
@Override public V remove(Object key) { int kIdx = findKey(key); if (kIdx < 0) { // not found return null; } @SuppressWarnings("unchecked") V oldValue = (V) mapArr[kIdx+1]; int oldLen = mapArr.length; if (oldLen == 2) { // was last entry mapArr = null; } else { Object[] newMapArr = new Object[oldLen-2]; System.arraycopy(mapArr, 0, newMapArr, 0, kIdx); System.arraycopy(mapArr, kIdx+2, newMapArr, kIdx, oldLen - kIdx - 2); mapArr = newMapArr; } return oldValue; }
int kIdx = findKey(key);
int existKeyIdx = findKey(entry.getKey());