package examples;
import org.mapdb.Bind;
import org.mapdb.DBMaker;
import org.mapdb.Fun;
import org.mapdb.HTreeMap;
import java.util.NavigableSet;
import java.util.TreeSet;
/**
* Simple way to create bidirectional map (can find key for given value) using Binding.
*/
public class Bidi_Map {
public static void main(String[] args) {
//primary map
HTreeMap map = DBMaker.newTempHashMap();
// inverse mapping for primary map
NavigableSet> inverseMapping = new TreeSet>();
//NOTE: you may also use Set provided by MapDB to make it persistent
// bind inverse mapping to primary map, so it is auto-updated
Bind.mapInverse(map, inverseMapping);
map.put(10L,"value2");
map.put(1111L,"value");
map.put(1112L,"value");
map.put(11L,"val");
//now find all keys for given value
for(Long key: Fun.filter(inverseMapping, "value")){
System.out.println("Key for 'value' is: "+key);
}
}
}