package p13_pliki.tadeusz;

import java.io.File;
import java.io.FileNotFoundException;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/* Program dla każdego słowa występującego w pliku oblicza, ile razy ono występuje.
 * Program powinien bez powtórzeń wypisać każde słowo i jego liczbę wystąpień.
 * 
 * Dodatkowe urozmaicenia - można wyniki posortować alfabetycznie wg słów albo wg liczby wystąpień,
 * można ignorować wielkość liter.
 */

public class PoliczWszystkieSlowa1 {

	public static void main(String[] args) {
		Map<String, Integer> slownik = new HashMap<>();
		
		try(Scanner scanner = new Scanner(new File("pan_tadeusz.txt"))) {
			scanner.useDelimiter("[^\\p{L}\\d]+");
			
			while(scanner.hasNext()) {
				String slowo = scanner.next();
				if(slownik.containsKey(slowo)) {
					// słowo już wcześniej występowało - trzeba zwiększyć liczbę wystąpień zapisaną w słowniku
					int ileBylo = slownik.get(slowo);
					slownik.put(slowo, ileBylo+1);
				} else {
					// słowo widzimy po raz pierwszy - trzeba wstawić do słownika z wartością 1
					slownik.put(slowo, 1);
				}
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		
		// System.out.println(slownik);
		for(Map.Entry<String, Integer> entry : slownik.entrySet()) {
			System.out.printf("%-20s → %4d%n", entry.getKey(), entry.getValue());
		}
	}

}
