[Java] Frequenza di una parola in un testo

3d Java Text1

[Java] Frequenza di una parola in un testo

0

Stavo trafficando con Java (ho scritto diverse parti della guida, ma non voglio pubblicarla finchè non è terminata del tutto :() e mi sono ritrovato a voler risolvere questo problema: stampare la frequenza di ogni parola in un testo.

Ovvero, preso un testo, stampare quante volte ogni parola viene ripetuta.

Per farlo ho utilizzato le classi:

  • StringTokenizer: che permette di tokenizzare facilmente una stringa,
  • TreeMap: crea un dizionario, ovvero una specie di lista formata di coppie chiave-valore ordinata natuarlmente in base alla chiave( se è una String o un Int, ordina alfanumericamente.
import java.util.StringTokenizer;
import java.util.TreeMap;

class FrequenzeDiParoleInUnaStringa
{
	private String stringa; //La stringa da analizzare
	private TreeMap<String, Integer> dictionary = new TreeMap<String, Integer>(); //Inizializzo il TreeMap

	FrequenzeDiParoleInUnaStringa(String stringa)
	{
		this.stringa = stringa;
	}
	public String frequenza() //Il metodo per il calcolo della frequenza
	{
		StringTokenizer st = new StringTokenizer(stringa); //Tokenizzo la stringa

		while(st.hasMoreTokens()) //Continua finchè ci sono token. Se non specifico il token, prende automaticamente lo spazio.
		{
			String token = st.nextToken(); //Mi salvo il token
			if(dictionary.containsKey(token)) //Se lo ho già aggiunto
			{
				dictionary.put(token, dictionary.get(token)+1); //Aggiungo +1
			}
			else
			{
				dictionary.put(token , 1); //Altrimenti non l'ho mai incontrato quindi lo salvo e inizializzo ad 1.
			}
		}

		return dictionary.toString(); //Mi stampo il dizionario usando il metodo toString
	}

	public static void main (String[] args)
	{
		System.out.println(new FrequenzeDiParoleInUnaStringa("Ciao Ciao come come stai? Tutto bene, spero proprio proprio di si!").frequenza());
	}
}

Il risultato del main è:

{Ciao=2, Tutto=1, bene,=1, come=2, di=1, proprio=2, si!=1, spero=1, stai?=1}

Notate inoltre l’ordine alfabetico! 🙂

About the Author

Federico Ponzi

Studente, Webmaster ed appassionato di tutto ciò che è informatico con una spruzzata di scienza.

View all posts by Federico Ponzi

Leave a Reply