Java: metodo più efficace per memorizzare / recuperare informazioni da un file di allenamento?

StackOverflow https://stackoverflow.com/questions/1773602

  •  21-09-2019
  •  | 
  •  

Domanda

Sto lavorando su un progetto Java per la classe che memorizza le informazioni allenamento in un file flat. Ogni file avrà le informazioni relative a un esercizio (BenchPress.data) che contiene il tempo (millisecondi dalla epoca), peso e ripetizioni.

Esempio:

1258355921365: 245: 12

1258355921365: 245: 10

1258355921365: 245: 8

Qual è il modo più efficiente per archiviare e recuperare questi dati? Sarà rappresentata graficamente e cercato attraverso limitare esercizi per date specifiche o intervalli di date.

idee che avevo era quello di scrivere le informazioni più recenti per la parte superiore del file invece di aggiungere alla fine. In questo modo quando inizio a leggere dall'alto, avrò le informazioni più recenti, che corrisponderà la maggior parte delle ricerche (Assunzione).

Non c'è alcuna garanzia sull'ordine delle date, però. Un utente potrebbe entrare esercizi per oggi e poi entrare e digitare ultime settimane gli esercizi, per qualsiasi motivo. Dovrei prendere il colpo al momento del salvataggio di ordinare tutte le informazioni entro la data?

Devo andare una direzione completamente diversa? So che una base di dati sarebbe l'ideale, ma questo è un progetto di gruppo e la gestione di un impianto di base di dati e sincronizzazione dei dati tra tutti noi, non sarebbe l'ideale. Gli altri non hanno alcuna esperienza con i database e faranno classificazione difficile.

Quindi, grazie per qualsiasi consiglio o suggerimento.

-John

È stato utile?

Soluzione

Non complicare le cose. A meno che non avete a che fare con milioni di record si può semplicemente leggere il tutto in memoria e ordinare qualsiasi modo che ti piace. E sempre aggiungere record, alla fine, in questo modo si hanno meno probabilità di danneggiare il file.

Altri suggerimenti

Per i progetti semplici, usando un embedded come JavaDB / Apache Derby può essere una buona idea. Configurazione per il DB è assolutamente minimo e nel tuo caso, potrebbe essere necessario un massimo di soli 2 tavoli (Utente e allenamento). Esportazione dei dati di file è anche abbastanza semplice per la sincronizzazione tra i membri del team.

Come yu_sha ha sottolineato, però, a meno che non si aspettano di avere un grande insieme di dati (per l'esecuzione su un PC,> 50000), si può semplicemente utilizzare il file e leggere tutto in memoria.

Leggi in ogni linea via BufferedReader e analizzare con StringTokenizer. Guardando i dati, mi piacerebbe probabilmente memorizzare una serie di campi in un List che può eseguire l'iterazione e ordinati in base alle proprie preferenze.

Se è necessario archiviare il file in questo formato, è molto probabile che migliori fuori solo leggendo l'intera cosa in memoria all'avvio e riporlo in un TreeMap o qualche altro ordinato, mappa consultabile. Quindi è possibile utilizzare metodi di convenienza di treemap come ceilingKey o il floorKey simile per trovare le partite vicino a certe date / orari.

flatworm , una libreria Java che permette di analizzare e creare file flat. Descrivere il formato con un semplice file di definizione XML, e ci si va.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top