
org.molgenis.util.HugeMap Maven / Gradle / Ivy
package org.molgenis.util;
import java.io.Closeable;
import java.io.File;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import org.mapdb.DB;
import org.mapdb.DBMaker;
public class HugeMap implements Map, Closeable
{
private final DB mapDB;
private final Map mapDBMap;
public HugeMap()
{
File dbFile;
try
{
dbFile = File.createTempFile("mapdb", "temp");
}
catch (IOException e)
{
throw new RuntimeException(e);
}
mapDB = DBMaker.newFileDB(dbFile).deleteFilesAfterClose().transactionDisable().make();
mapDBMap = mapDB.createHashMap("map").make();
}
@Override
public int size()
{
return mapDBMap.size();
}
@Override
public boolean isEmpty()
{
return mapDBMap.isEmpty();
}
@Override
public boolean containsKey(Object key)
{
return mapDBMap.containsKey(key);
}
@Override
public boolean containsValue(Object value)
{
return mapDBMap.containsValue(value);
}
@Override
public V get(Object key)
{
return mapDBMap.get(key);
}
@Override
public V put(K key, V value)
{
return mapDBMap.put(key, value);
}
@Override
public V remove(Object key)
{
return mapDBMap.remove(key);
}
@Override
public void putAll(Map extends K, ? extends V> m)
{
mapDBMap.putAll(m);
}
@Override
public void clear()
{
mapDBMap.clear();
}
@Override
public Set keySet()
{
return mapDBMap.keySet();
}
@Override
public Collection values()
{
return mapDBMap.values();
}
@Override
public Set> entrySet()
{
return mapDBMap.entrySet();
}
@Override
public void close() throws IOException
{
mapDB.close();
}
@Override
public String toString()
{
return new HashMap(this.mapDBMap).toString();
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy