我使用 mapDB 来存储插入到地图中的数据。我按照 mapDB-Site 上的说明进行操作,能够设置数据库并用值填充它。但是我的问题就在这里,我将数据插入到地图中,然后调用数据库类将地图插入到数据库中。然后将当前映射添加到数据库中,但会自动覆盖先前的条目,因此条目数始终为 1。
这是我的代码:
for(Element objects : objectInstanceList)
{
mapID = objects.getName().toString();
List<Element> listObjects1 = objects.getChildren();
Multimap<String, Values> mm = HashMultimap.create();
for(Element objectClasses : listObjects1 )
{
List<Element> listObjects2 = objectClasses.getChildren();
for(Element objectAttributes : listObjects2)
{
String name = objectAttributes.getAttributeValue("name");
String type = objectAttributes.getAttributeValue("type");
String value = objectAttributes.getAttributeValue("value");
Values v = new Values(name, type, value);
mm.put(objectClasses.getName(), v);
}
}
DataBase.putHW(mapID, mm);
System.out.println(mm);
}
就像我说的那样,我用一些值和 Method Database.putHW 填充 Multimap mm,它看起来像这样(在 mapDB 页面的示例中创建)。
public class DataBase {
static DB dbHW = DBMaker.newMemoryDB().make();
static NavigableSet<Fun.Tuple2<String, Multimap<String,Values>>> multimapHW
= dbHW.getTreeSet("Applications");
public static void putHW(String mapID, Multimap<String,Values> dbMap) {
multimapHW = dbHW.createTreeSet("Delta").serializer(BTreeKeySerializer.TUPLE2).make();
multimapHW.add(Fun.t2(mapID, dbMap)); // Fun means functional, its the Function to add values in the map
}
}
那么为什么数据库中的 multimapHW 只包含 1 个条目,而不是许多条目?