|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Junior Member
Iscritto dal: Aug 2017
Messaggi: 8
|
Lettura da File in java
Salve,
vorrei avere un consiglio su come su come si possa leggere un file di questo tipo: *Marco 1 2 3 *Roberta 1 2 3 *Marco 3 4 ho dei nomi e dei vettori con un numero per ogni riga. Il mio problema è quello di non riuscire ad inserire i numeri in un ArrayList essendo essi disposti riga per riga e avendo anche una lunghezza non uguale. Sapreste per favore consigliarmi qualcosa? |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Se quello è il formato che problema hai a leggere riga per riga e inserire in ArrayList solo le righe che non cominciano per * ?
|
![]() |
![]() |
![]() |
#3 |
Junior Member
Iscritto dal: Aug 2017
Messaggi: 8
|
Facendo come dici tu mi crea un ArrayList per ogni riga di lunghezza 1, mentre il mio ArrayList associato alla persona dovrebbe essere del tipo:
Marco 1 2 3 3 4 Roberta 1 2 3 |
![]() |
![]() |
![]() |
#4 |
Junior Member
Iscritto dal: Mar 2017
Messaggi: 13
|
fare una funzione
boolean isRecorded(String name); che dato il nome incontrato ti restituisce true se l'array è stato gia creato |
![]() |
![]() |
![]() |
#5 | |
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Quote:
Nel caso debba averne uno solo, ti basta una associazione tra Nome e ArrayList e ogni volta che trovi * vai a vedere se il nome ce l'hai già, se ce lo hai aggiungi all'ArrayList associato a quel nome altrimenti ne crei uno nuovo e inserisci fino a che non trovi un altro * |
|
![]() |
![]() |
![]() |
#6 |
Junior Member
Iscritto dal: Aug 2017
Messaggi: 8
|
io ho fatto un HashMap che contiene il nome e l'oggetto persona, ad ogni nome presente nel file viene associato l'oggetto Persona che a sua volta contiene nome e un ArrayList di vettori (se un nome compare più di una vota nel file esso dovrà comparire una sola volta ma con un numero di vettori associati pari al numero di volte che compare). Il problema è proprio quello di non riuscir a inserire dentro ArrayList di interi dell'oggetto Vettore un numero di interi pari al numero di righe che seguono il nome. Spero di essere stato chiaro
|
![]() |
![]() |
![]() |
#7 |
Bannato
Iscritto dal: Jan 2010
Città: Roma
Messaggi: 4638
|
Codice:
public static void main(String[] args) throws Exception { BufferedReader fio = new BufferedReader(new FileReader("D:/nomi.txt")); HashMap<String, ArrayList<String>> mappa = new HashMap<>(); ArrayList<String> lista = null; String nome; String riga = fio.readLine(); while (riga!=null) { if (riga.startsWith("*")) { nome = riga; if (!mappa.containsKey(nome)) { lista = new ArrayList<>(); mappa.put(nome, lista); } else lista = mappa.get(nome); } else lista.add(riga); riga = fio.readLine(); } fio.close(); } |
![]() |
![]() |
![]() |
#8 |
Junior Member
Iscritto dal: Aug 2017
Messaggi: 8
|
Cosi dovrebbe funzionare, grazie mille
|
![]() |
![]() |
![]() |
#9 |
Bannato
Iscritto dal: Jan 2010
Città: Roma
Messaggi: 4638
|
|
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:36.