@Override public E remove(final int index) { if (!_wrappedMap.containsKey(index)) { throw new IndexOutOfBoundsException(); } final E element = _wrappedMap.get(index); for (int i = index; i < _wrappedMap.size() - 1; i++) { _wrappedMap.put(i, _wrappedMap.get(i + 1)); } _wrappedMap.remove(_wrappedMap.size() - 1); return element; } }
@Override public E get(final int index) { if (!_wrappedMap.containsKey(index)) { throw new IndexOutOfBoundsException(); } return _wrappedMap.get(index); }
@Override public E set(final int index, final E element) { if (!_wrappedMap.containsKey(index)) { throw new IndexOutOfBoundsException(); } return _wrappedMap.put(index, element); }
@Override public int size() { return _wrappedMap.size(); }
@Override protected void finalize() throws Throwable { super.finalize(); _wrappedMap.finalize(); }
@Override public <K, V> BerkeleyDbMap<K, V> createMap(final Class<K> keyType, final Class<V> valueType) throws IllegalStateException { try { final EntryBinding keyBinding = createBinding(keyType); final EntryBinding valueBinding = createBinding(valueType); final Database database = createDatabase(); final StoredMap map = new StoredMap(database, keyBinding, valueBinding, true); return new BerkeleyDbMap<>(getEnvironment(), database, map); } catch (final DatabaseException e) { throw new IllegalStateException(e); } }
@Override public void add(final int index, final E element) { if (!_wrappedMap.containsKey(index)) { throw new IndexOutOfBoundsException(); } for (int i = _wrappedMap.size(); i > index; i--) { _wrappedMap.put(i, _wrappedMap.get(i - 1)); } _wrappedMap.put(index, element); }