PDA

View Full Version : Lettura da File in java


chri.ten.94
28-08-2017, 12:35
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?

tomminno
28-08-2017, 17:09
Se quello è il formato che problema hai a leggere riga per riga e inserire in ArrayList solo le righe che non cominciano per * ?

chri.ten.94
28-08-2017, 17:33
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

permaflex64
28-08-2017, 23:56
fare una funzione

boolean isRecorded(String name);

che dato il nome incontrato ti restituisce true se l'array è stato gia creato

tomminno
29-08-2017, 09:44
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

Ma Marco deve avere 2 ArrayList o uno solo?
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 *

chri.ten.94
01-09-2017, 09:23
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

LukeIlBello
01-09-2017, 12:26
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();

}

chri.ten.94
01-09-2017, 12:59
Cosi dovrebbe funzionare, grazie mille

LukeIlBello
01-09-2017, 22:36
Cosi dovrebbe funzionare, grazie mille
http://www.arboristsite.com/community/styles/toronja1/emoticones/rock.gif