allora sto andando avanti così e credo proprio che questa struttura dati sia la migliore, mille grazie!!Originariamente inviato da VincenzoTheBest
Ti basta definire la tua istanza di HashMap in questo modo:
poi, mentre scorri il file:codice:HashMap<String, Integer> map = new HashMap<String, Integer>();
se la get ti restituisce null, fai una put della stringa assegnando il valore 1,
altrimenti fai una put della stringa incrementando il suo valore.
Mi rimane ancora un problema che non riesco a capire, passo il codice:
recupero parola e carica dell'HashMap
Metodo cercaParole (dovrebbe ritornare 0 se la parola non è presente altrimenti le volte in cui la parola appare nel documento. Devo passare un array perchè la ricerca deve essere potuta fare anche su array di parole. In questo caso il risultato finale è la somma delle occorrenze di TUTTE le parole ricercate)codice://recupero la parola e elimino \n riga=scanSq.nextLine(); word= riga.substring(0, riga.length()-2); //costruttore della classe parola: string caratteri=word , int volte=1 ParolaF parol= new ParolaF(word); if (tabellHash.containsKey(word)) { //metodo aggiungVolta() volte++ (riferito alla parola in analisi) parol.aggiungVolta(); //stampa di controllo System.out.println("trovata parola "+word+" gia' "+parol.numVolte()+" volte"); tabellHash.put(word, parol.numVolte()); //stampa di controllo System.out.println("Reinserita parola "+word+" con valore: "+parol.numVolte()); } else { i++; tabellHash.put(word, parol.numVolte()); System.out.println("inserita parola numero "+i); }
a quanto ho capito questo dovrebbe funzionare correttamente ma in un file tipo:codice:public int cercaParole(String[] lista){ int size= lista.length; for (int i= 0; i < size; i++) { if (tabellHash.get(lista[i]) == null) return risultato; else risultato= tabellHash.get(lista[i])+risultato; } return risultato; }
riga1
giovani
caccasauro
riga1
riga1
per una ricerca sopra la parola riga1 mi fornisce come risultato 2 e mi stampa negli output di controllo:
inserito valore numero 1
inserito valore numero 2
inserito valore numero 3
trovata parola riga1 già 2 volte
reinserisco riga1 con nuovo valore 2
trovata parola riga1 già 2 volte
reinserisco riga1 con nuovo valore 2
//e come risultato ovviamente ottengo:
La parola è presente 2 volte
perchè mi restituisce 2 e non 3? perchè al secondo controllo positivo non aumenta il "volte"??

Rispondi quotando