E11

import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;


public class Cviko11 {

        public void podpriemer() {
                Scanner s = new Scanner(System.in);
                ArrayList<Integer> zoznam = new ArrayList<Integer>();
                int hodnota = s.nextInt();
                while (hodnota > -1) {
                        zoznam.add(hodnota);
                        hodnota = s.nextInt();
                }
                System.out.println(zoznam);

                double sucet = 0;
//              for (int i = 0; i < zoznam.size(); i++) {
//                      sucet += zoznam.get(i);
//              }
//              double priemer = sucet/zoznam.size();
//              System.out.println("priemer je " + sucet/zoznam.size());
//             
//              for (int i = 0; i < zoznam.size(); i++) {
//                      if (zoznam.get(i) < priemer)
//                              System.out.print(zoznam.get(i) + " ");
//              }

                for (Integer h : zoznam) {
                        sucet += h;
                }
                double priemer = sucet/zoznam.size();
                for (Integer h : zoznam) {
                        if (h < priemer)
                                System.out.print(h + " ");
                }
        }

        public void spolocnePrednasky(File file) {
                Scanner s = null;
                try {
                        s = new Scanner(file);
                        Set<String> spolocne = new HashSet<String>();
                        String riadok = s.nextLine().toUpperCase();
                        String[] predmety = riadok.split(" ");
                        for (int i = 0; i < predmety.length; i++) {
                                spolocne.add(predmety[i]);
                        }
                        while (s.hasNextLine()) {
                                Set<String> dalsiStudent = new HashSet<String>();
                                riadok = s.nextLine().toUpperCase();
                                predmety = riadok.split(" ");
                                for (int i = 0; i < predmety.length; i++) {
                                        dalsiStudent.add(predmety[i]);
                                }
                                spolocne.retainAll(dalsiStudent);
                        }
                        System.out.println(spolocne);
                } catch (FileNotFoundException e) {
                        System.err.println("Chyba");
                } finally {
                        if (s != null)
                                s.close();
                }
        }

        public void frekvencnaAnalyza(File subor) {
                Map<Character, Integer> mapa = new HashMap<Character, Integer>();
                Scanner s = null;
                try {
                        s = new Scanner(subor);
                        while (s.hasNext()) {
                                String slovo = s.next().toUpperCase();
                                for (int i = 0; i < slovo.length(); i++) {
                                        if (mapa.containsKey(slovo.charAt(i))) {
                                                mapa.put(slovo.charAt(i), mapa.get(slovo.charAt(i)) + 1);
                                        } else {
                                                mapa.put(slovo.charAt(i), 1);
                                        }
                                }
                        }
                } catch (FileNotFoundException e) {
                        System.err.println("Chyba");
                } finally {
                        if (s != null)
                                s.close();
                }
                System.out.println(mapa);

                while (mapa.keySet().size() > 10) {
                        // najdeme ten s najmensim vyskytom
                        int min = Integer.MAX_VALUE;
                        Character znak = null;
                        for (Character c : mapa.keySet()) {
                                if (mapa.get(c) < min) {
                                        min = mapa.get(c);
                                        znak = c;
                                }
                        }
                        //odstranime ho z mapy
                        mapa.remove(znak);
                }
                System.out.println(mapa);              
        }

        public static void main(String[] args) {
                Cviko11 z = new Cviko11();
//              z.podpriemer();
                z.spolocnePrednasky(new File("predmety.txt"));
                z.frekvencnaAnalyza(new File("predmety.txt"));
        }
}