@Override @Nonnull public <K2 extends K> UpdatableLHashSeparateKVObjByteMapGO<K2> newUpdatableMap( Map<? extends K2, Byte> map, int expectedSize) { if (map instanceof ObjByteMap) { // noinspection unchecked ObjByteMap<K2> objByteMap = (ObjByteMap<K2>) map; if (map instanceof SeparateKVObjByteLHash) { SeparateKVObjByteLHash hash = (SeparateKVObjByteLHash) map; if (hash.hashConfig().equals(hashConf) && objByteMap.keyEquivalence().equals(getKeyEquivalence())) { UpdatableLHashSeparateKVObjByteMapGO<K2> res = uninitializedUpdatableMap(); res.copy(hash); return res; } } UpdatableLHashSeparateKVObjByteMapGO<K2> res = newUpdatableMap(expectedSize); res.putAll(map); return res; } else { UpdatableLHashSeparateKVObjByteMapGO<K2> res = newUpdatableMap(expectedSize); for (Map.Entry<? extends K2, Byte> entry : map.entrySet()) { res.put(entry.getKey(), entry.getValue()); } return res; } } }
@Override @Nonnull public <K2 extends K> UpdatableLHashSeparateKVObjByteMapGO<K2> newUpdatableMap( Map<? extends K2, Byte> map, int expectedSize) { if (map instanceof ObjByteMap) { // noinspection unchecked ObjByteMap<K2> objByteMap = (ObjByteMap<K2>) map; if (map instanceof SeparateKVObjByteLHash) { SeparateKVObjByteLHash hash = (SeparateKVObjByteLHash) map; if (hash.hashConfig().equals(hashConf) && objByteMap.keyEquivalence().equals(getKeyEquivalence())) { UpdatableLHashSeparateKVObjByteMapGO<K2> res = uninitializedUpdatableMap(); res.copy(hash); return res; } } UpdatableLHashSeparateKVObjByteMapGO<K2> res = newUpdatableMap(expectedSize); res.putAll(map); return res; } else { UpdatableLHashSeparateKVObjByteMapGO<K2> res = newUpdatableMap(expectedSize); for (Map.Entry<? extends K2, Byte> entry : map.entrySet()) { res.put(entry.getKey(), entry.getValue()); } return res; } } }