5

저는 100,000 개가 넘는 키를 가질 수있는 몇 개의 맵을 사용하는 프로젝트를 진행하고 있습니다. 현재지도를 약 1,000 개의 키만 가질 수 있도록 시간을 절약하기 위해 데이터의 축약 된 형식을 사용하여 각 런타임에서 맵을 생성합니다. 그러나 내가 사용할 수있는 모든 데이터를 테스트하고 싶습니다.하드 드라이브에 객체를 저장하려면 어떻게해야합니까?

클래스에서지도를 만든 다음 그 개체를 하드 드라이브에 저장 한 다음 다른 클래스의 해당 개체를 참조하여지도를 각각 채우거나 채울 필요가 없는지 궁금합니다. 나는 수업을 시험해 본다. 나는 이클립스를 사용하여 Java로 클래스를 작성하고있다.

편집 : 나는 이것이 객체 직렬화라고 생각하지만 직렬화 된 경우 사용하기 전에 전체 맵을 읽어야합니까? 아니면 지역 변수를 호출하는 것과 실질적으로 동일할까요?

+3

관련 항목 : http://stackoverflow.com/questions/1536953/recommend-a-fast-scalable-persistent-map-java? – NPE

+0

물론 파일을 만들 수 있습니다. 그러나 키 또는 값이 무엇인지에 대해 알려주지 않았으므로 접근 방법을 제안하기가 어렵습니다. –

+1

두 가지 일반적인 방법이 있습니다 : 데이터베이스 또는 파일 기반. –

답변

0

비슷한 문제가있었습니다. 먼저 HSQLDB을 사용했습니다. 그 후 나는 EHCache을 확인했다. 그리고 차이점을 만듭니다 - 더 빨리 작동하고 이해하기 쉽습니다.

NOSQL 페이지의 "Key Value/Tuple Store"단락에서도 확인할 수 있습니다. 확실히 당신을 위해 뭔가를 찾을 수 있습니다.

0

지도에 직렬화 가능한 객체가 포함 된 경우 serailization을 사용하여지도를 직접 디스크에 쓸 수 있습니다. 예 : 문자열지도, 정수

지도가 사용자가 만든 맞춤 클래스를 보유하고 있다면 Serializable interface을 구현하여 클래스를 직렬화 할 수 있어야합니다.

당신은 명시 적으로 클래스는 다시 클래스의 내용을 읽기 위해 쓰기와의 readObject (ObjectInputStream에의 OIS)에 사용하는 writeObject (ObjectOutputStream에들)을 오버라이드하여 직렬화를 사용하여 디스크에 기록되는 방식을 결정할 수 있습니다.

이러한 메소드 즉, writeObject() 및 readObject()는 직렬화 및 직렬화가 발생할 때 암시 적으로 호출됩니다. 이러한 메소드를 구현하는 동안주의해야합니다. 필 요한 순서대로 요소를 다시 읽어야합니다. 이러한 방법을 구현하는 방법을

샘플 예제 :