是否有人也許有示例代碼如何取代BerkeleyDB的類似Java列表(鏈表或ArrayList的)?我的問題是,我必須替換列表以擴展主內存限制。一些簡單的示例代碼會非常好。使用的BerkeleyDB更換java.util.List的
我現在已經用於整數(鍵)的簡單TupleBinding併爲DIFF級(數據值)一SerialBinding。
現在我收到的錯誤:
14:03:29.287 [pool-5-thread-1] ERROR o.t.g.view.model.TraverseCompareTree - org.treetank.diff.Diff; local class incompatible: stream classdesc serialVersionUID = 8484615870884317488, local class serialVersionUID = -8805161170968505227
java.io.InvalidClassException:org.treetank.diff.Diff;局部類不兼容:流classdesc的serialVersionUID = 8484615870884317488,本地類的serialVersionUID = -8805161170968505227
的監聽器和TransactionRunner類我使用的是:
/** {@inheritDoc} */
@Override
public void diffListener(final EDiff paramDiff, final IStructuralItem paramNewNode,
final IStructuralItem paramOldNode, final DiffDepth paramDepth) {
try {
mRunner.run(new PopulateDatabase(mDiffDatabase, mKey++, new Diff(paramDiff, paramNewNode.getNodeKey(), paramOldNode.getNodeKey(), paramDepth)));
} catch (final Exception e) {
LOGWRAPPER.error(e.getMessage(), e);
}
}
private static class PopulateDatabase implements TransactionWorker {
private StoredMap<Integer, Diff> mMap;
private int mKey;
private Diff mValue;
public PopulateDatabase(final DiffDatabase paramDatabase, final int paramKey, final Diff paramValue) {
Objects.requireNonNull(paramDatabase);
Objects.requireNonNull(paramValue);
mMap = paramDatabase.getMap();
mKey = paramKey;
mValue = paramValue;
}
@Override
public void doWork() throws DatabaseException {
mMap.put(mKey, mValue);
}
}
我不知道爲什麼它不工作: -/
編輯:對不起,我不得不刪除生成的環境/數據庫,並創建一個新的。
我想我必須(0()來則爲list.size)作爲存儲鍵簡單的數字,然後使用一個數據庫抽象獲得實際的數據,HM。 – Johannes
這完全取決於您的數據。如果數據具有其他固有結構,則創建更合適的數據庫佈局可能是有意義的。 – nfechner