2013-03-11 18 views
5

Sto lavorando a un progetto che utilizza un paio di mappe che possono contenere oltre 100.000 chiavi. Attualmente sto creando le mappe in ogni runtime utilizzando una forma abbreviata dei dati per risparmiare tempo in modo che le mappe abbiano solo circa 1.000 chiavi. Ma vorrei testare con tutta la portata dei dati che ho a disposizione.Come posso archiviare un oggetto sul mio disco rigido?

Mi chiedo come posso creare una mappa in una classe, quindi salvare quell'oggetto sul disco rigido, quindi poter fare riferimento a quell'oggetto in classi diverse in modo che non sia necessario creare e riempire la mappa ogni volta provo la lezione. Sto scrivendo la lezione in Java usando Eclipse.

Modifica: Credo che si chiami Object Serialization, ma dovrei leggere l'intera mappa prima dell'uso se è serializzata? O sarebbe effettivamente lo stesso che chiamare una variabile locale?

+3

È questo di pertinenza: http://stackoverflow.com/questions/1536953/recommend-a-fast-scalable-persistent-map-java? – NPE

+0

Certo, puoi creare un file. Tuttavia, non ci hai detto nulla su quali siano le chiavi o i valori, il che rende difficile suggerire un approccio. –

+1

ci sono due modi comuni: tramite database o file basato. –

risposta

0

Ho avuto un problema simile. Per prima cosa ho usato HSQLDB. Successivamente ho controllato EHCache. E fa la differenza: lavora più velocemente ed è più facile da capire.

È anche possibile consultare la pagina NOSQL, paragrafo "Valore chiave/Memorizza tupla". Di sicuro troverai qualcosa per te.

0

Se la mappa contiene oggetti serializzabili, è possibile scrivere direttamente la mappa sul disco utilizzando serailization. Es: Mappa di String, Integer

Ma se la tua mappa contiene una classe personalizzata che hai creato, la classe deve essere serializzabile implementando Serializable interface.

È possibile decidere in modo esplicito il modo in cui la classe viene scritta su disco utilizzando la serializzazione sovrascrivendo writeObject (ObjectOutputStream s) per la scrittura e readObject (ObjectInputStream ois) per la lettura dei contenuti della classe.

Questi metodi, ad esempio writeObject() e readObject(), verranno chiamati implicitamente quando si verifica la serializzazione e la deserializzazione. Fai attenzione mentre implementi questi metodi come devi devi leggere gli elementi nello stesso ordine in cui scrivi.

esempio di esempio come implementare questi metodi: Sample example

Problemi correlati