@Override public void insertLeaf(int index, Object key, Object value) { int len = keys.length + 1; Object[] newKeys = new Object[len]; DataUtils.copyWithGap(keys, newKeys, len - 1, index); keys = newKeys; Object[] newValues = new Object[len]; DataUtils.copyWithGap(values, newValues, len - 1, index); values = newValues; keys[index] = key; values[index] = value; totalCount++; addMemory(map.getKeyType().getMemory(key) + map.getValueType().getMemory(value)); }
@Override public void insertNode(int index, Object key, BTreePage childPage) { Object[] newKeys = new Object[keys.length + 1]; DataUtils.copyWithGap(keys, newKeys, keys.length, index); newKeys[index] = key; keys = newKeys; int childCount = children.length; PageReference[] newChildren = new PageReference[childCount + 1]; DataUtils.copyWithGap(children, newChildren, childCount, index); newChildren[index] = new PageReference(childPage, childPage.getPos(), childPage.getTotalCount(), key, index == 0); children = newChildren; totalCount += childPage.getTotalCount(); addMemory(map.getKeyType().getMemory(key) + PageUtils.PAGE_MEMORY_CHILD); }