Originariamente inviato da Fabietto206
Di ogni file xls a me interessa la 5 e la 7 colonna e basta, in particolare la 5 colonna sarà la "chiave", mentre la 7 è il "valore" (contiene un'int).
Il file xls è formato da molte righe, ogni xls ha lo stesso numero di righe e le stesse "chiavi", differiscono solo per il campo "valore".
Se usi una versione >= 5, puoi definire la tua istanza di HashMap avvalendoti delle Generics:
codice:
Map<String, Integer> map = new HashMap<String, Integer>();
perchè la colonna 5 contiene stringhe, invece la 7 contiene interi.
Originariamente inviato da Fabietto206
Il programma deve incrementare il "valore" ogni volta che incontra la stessa "chiave" nei xls successivi.
In generale, puoi definire un algoritmo simile a quello per il calcolo della frequenza di ogni elemento ..
Originariamente inviato da Fabietto206
@VincenzoTheBest: potresti spiegarmi meglio la soluzione che hai proposto? Credo che quella composta dai 3 punti possa fare al caso mio sicuramente...dato che alla fine devo avere un'unica Hash Map con le "chiavi" da una parte e la somma di ogni "valore" dall'altra....
Nel secondo caso, si tratta di tre soluzioni alternative proposte in funzione del metodo elaboraFile, quindi nessuno ti vieta, ad esempio, di fare:
codice:
public class YourClass {
public static Map<String, Integer> getResultMap(File[] files) {
HashMap<String, Integer> map = new HashMap<String, Integer>();
for(File file : files) {
// aggiungi a map i dati dell'i-esimo file ..
}
return map;
}
}
Se proprio ti convince la seconda soluzione:
rendi l'istanza di HashMap un campo di istanza, con la conseguenza che elaboraFile deve essere un metodo di istanza.
codice:
public class YourClass {
private Map<String, Integer> map;
public YourClass() {
this.map = new HashMap<String, Integer>();
}
public void addData(File xls) {
// aggiungi i valori di questo files a map
}
// lo invochi quando hai estratto i dati di tutti i files
public Map<String, Integer> getResultMap() {
return this.map;
}
}