2013-03-11 32 views
5

Tôi đang làm việc trên một dự án sử dụng một vài bản đồ có thể có hơn 100.000 khóa. Hiện tại tôi đang tạo bản đồ tại mỗi thời gian chạy bằng cách sử dụng dạng rút gọn của dữ liệu để tiết kiệm thời gian sao cho bản đồ chỉ có khoảng 1.000 khóa. Nhưng tôi muốn thử nghiệm với đầy đủ các dữ liệu mà tôi có sẵn.Làm cách nào để lưu trữ một đối tượng trên ổ cứng?

Tôi tự hỏi làm thế nào tôi có thể tạo bản đồ trong một lớp, sau đó lưu đối tượng đó vào ổ cứng, sau đó có thể tham chiếu đối tượng đó trong các lớp khác nhau để tôi không cần tạo và điền vào bản đồ thời gian tôi kiểm tra lớp. Tôi đang viết lớp trong Java bằng Eclipse.

Chỉnh sửa: Tôi tin rằng nó được gọi là Object Serialization, nhưng tôi có phải đọc toàn bộ bản đồ trước khi sử dụng nếu nó được tuần tự hóa không? Hay nó có hiệu quả giống như gọi một biến cục bộ?

+3

Đây có phải là mức độ liên quan: http://stackoverflow.com/questions/1536953/recommend-a-fast-scalable-persistent-map-java? – NPE

+0

Chắc chắn, bạn có thể tạo một tập tin. Tuy nhiên, bạn đã không nói với chúng tôi bất cứ điều gì về những gì các phím hoặc giá trị được, mà làm cho nó khó khăn để đề xuất một cách tiếp cận. –

+1

có hai cách phổ biến: thông qua cơ sở dữ liệu hoặc tệp dựa. –

Trả lời

0

Tôi gặp sự cố tương tự. Đầu tiên tôi sử dụng HSQLDB. Sau đó tôi kiểm tra EHCache. Và nó làm cho sự khác biệt - hoạt động nhanh hơn và dễ hiểu hơn.

Bạn cũng có thể xem trên trang NOSQL, đoạn "Giá trị khóa/Cửa hàng bộ nhớ". Để chắc chắn bạn sẽ tìm thấy một cái gì đó cho bạn.

0

Nếu bản đồ của bạn chứa các đối tượng có thể tuần tự hóa, bạn có thể trực tiếp ghi bản đồ vào đĩa bằng cách sử dụng serailization. Ví dụ: Bản đồ của chuỗi, số nguyên

Nhưng nếu bản đồ của bạn chứa bất kỳ lớp tùy chỉnh nào mà bạn đã tạo thì lớp của bạn phải được tạo tuần tự bằng cách triển khai Serializable interface.

Bạn có thể quyết định rõ ràng cách lớp của bạn được ghi vào đĩa bằng cách sử dụng tuần tự bằng cách ghi đè writeObject (ObjectOutputStream s) để viết và readObject (ObjectInputStream ois) để đọc lại nội dung của lớp.

Các phương pháp này tức là writeObject() và readObject() sẽ được gọi ngầm khi quá trình tuần tự hóa và deserialization diễn ra. Hãy cẩn thận trong khi thực hiện các phương pháp này như bạn phải bạn phải đọc các yếu tố trở lại theo thứ tự như văn bản.

mẫu ví dụ làm thế nào để thực hiện các phương pháp: Sample example

Các vấn đề liên quan