누군가가 Java List (LinkedList 또는 ArrayList)를 BerkeleyDB와 비슷한 것으로 대체하는 샘플 코드가있을 수 있습니까? 내 문제는 목록을 메인 메모리 한계를 넘어서 확장해야한다는 것입니다. 몇 가지 간단한 샘플 코드가 정말 좋을 것입니다.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 to List.size())를 키로 저장 한 다음 데이터베이스 추상화를 사용하여 실제 데이터 인 hm을 얻어야한다고 가정합니다. – Johannes
전적으로 귀하의 데이터에 따라 다릅니다. 데이터에 다른 고유 한 구조가있는 경우 더 적절한 데이터베이스 레이아웃을 만드는 것이 바람직 할 수 있습니다. – nfechner