import java.io.File;
import java.util.*;
public class Prednasky {
public Set<String> citajRiadok(String riadok) {
Set<String> vysledok = new HashSet<String>();
Scanner citac = new Scanner(riadok);
while (citac.hasNext()) {
vysledok.add(citac.next().toUpperCase());
}
return vysledok;
}
public Set<String> spolocnePrednasky(String subor) {
Scanner citac = null;
Set<String> vysledok = null;
try {
citac = new Scanner(new File(subor));
while (citac.hasNextLine()) {
String riadok = citac.nextLine();
Set<String> prednaskyVRiadku = citajRiadok(riadok);
if (vysledok == null)
vysledok = prednaskyVRiadku;
else
vysledok.retainAll(prednaskyVRiadku);
}
} catch (Exception e) {
System.err.println("Zle je");
} finally {
if (citac != null)
citac.close();
}
return vysledok;
}
public Set<String> viacAkoPolovica(String subor) {
Map<String, Integer> pocty = new HashMap<String, Integer>();
int pocetStudentov = 0;
// Pre kazdu prednasku zistime, kolko studentov ju navstevuje
// vysledok ulozime do Map-u
Scanner citac = null;
try {
citac = new Scanner(new File(subor));
while (citac.hasNextLine()) {
String riadok = citac.nextLine();
Set<String> prednaskyVRiadku = citajRiadok(riadok);
// Zvysime pocitadla jednotlivych prednasok studenta
for (String prednaska: prednaskyVRiadku) {
if (pocty.containsKey(prednaska)) {
pocty.put(prednaska, pocty.get(prednaska) + 1);
} else {
pocty.put(prednaska, 1);
}
}
pocetStudentov++;
}
} catch (Exception e) {
System.err.println("Zle je");
} finally {
if (citac != null)
citac.close();
}
// Vyberieme z Map-u tie prednasky (kluce), ktore navstevuje viac ako polovica studentov
Set<String> vysledok = new HashSet<String>();
for (String prednaska: pocty.keySet())
if (pocty.get(prednaska) >= pocetStudentov/2)
vysledok.add(prednaska);
return vysledok;
}
/**
* @param args
*/
public static void main(String[] args) {
Prednasky prednasky = new Prednasky();
System.out.println(prednasky.spolocnePrednasky("prednasky.txt"));
}
}