PDA

View Full Version : Problema HashMap e ArrayList


mongy95
04-06-2016, 17:40
Salve a tutti,
premetto che ho iniziato a programmare da poco e non penso di essere tanto buono vorrei sapere se qualcuno mi può aiutare
ho questo file da leggere
"
NOME: Marco
VALORI: 1,2,3,4,5,6

NOME: Matteo
VALORI: 4,5,5,6,7,2

NOME: Marco
VALORI: 1,2,1
"

public class ListaVettori {

HashMap<String,Vettore> h;

public ListaVettori(){
h = new HashMap<String,Vettore>();

}


public void LeggiFile(String file){
try{
BufferedReader br = new BufferedReader(new FileReader(file));
String line;
while((line = br.readLine())!= null){
String nome;
Vettore v;
if(line.contains("NOME: ")){
line = line.replaceAll("NOME: ", "");
nome = line;
v = h.get(nome);
if(v == null){
v = new Vettore(nome);
h.put(nome, v);
if(v.ripetizioni(nome)==1)
System.out.println(nome);

}

line = br.readLine();
if(line.contains("VALORI: ")){
line = line.replaceAll("VALORI: ", "");
String el[] = line.split(",");
for(String k : el)
v.add(k);

}
}
}
br.close();
}catch(Exception e){
e.printStackTrace();
}
}

ho creato una classe dove c'è il main e e dove leggo e scrivo i file e un'altra classe che contiene il nome del vettore e un arraylist del vettore stesso
e non riesco a svolgere alcuni punti richiesti quali:
1. Stampare tutti i vettori che iniziano con un numero dispari
2. Stampare i vettori palindromi (cioè che letti in un senso o nell’altro, restano uguali – es., 1,2,1)

so che il primo è molto facile ma il mio problema è che, usando gli hasmap automaticamente mi associa al nome marco un unico vettore [1,2,3,4,5,6,1,2,1]
mentre io vorrei che fossero staccati i due vettori



molto probabilmente è una cosa facile vi prego se mi potete dare una mano
grazie!

GianMi
08-06-2016, 09:43
Be', è sbagliata la struttura dati: invece di HashMap<String,Vettore> devi usare Map<String, List<Vettore>>. Un consiglio: se non ci sono motivi particolari, meglio usare l'interfaccia nella dichiarazione della tua variabile o membro di classe e la concreta implementazione quando la istanzi.