From 5b5325fc293c635d2fe86e4bcfad249903d81b82 Mon Sep 17 00:00:00 2001 From: Johannes Theiner Date: Sun, 22 Apr 2018 19:53:00 +0200 Subject: [PATCH] Praktikum 3: Streams vllt --- .../praktikum3/Vorlesungsverzeichnis.java | 85 ++++++++++++++----- .../tests/VorlesungsverzeichnisTest.java | 2 +- 2 files changed, 67 insertions(+), 20 deletions(-) diff --git a/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java b/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java index 763e97d..f530ab0 100644 --- a/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java +++ b/src/main/java/de/joethei/hs/java2/praktikum/praktikum3/Vorlesungsverzeichnis.java @@ -1,19 +1,21 @@ package de.joethei.hs.java2.praktikum.praktikum3; -import java.io.*; +import java.io.BufferedReader; +import java.io.FileReader; +import java.io.IOException; import java.util.*; +import java.util.stream.Collectors; -public class Vorlesungsverzeichnis { +public class Vorlesungsverzeichnis implements Comparator{ private Set vorlesungen = new HashSet<>(); public Vorlesungsverzeichnis(String filename) throws IOException { + List> datenbasis; datenbasis = load(filename); - for(List a : datenbasis) { - if(a.size() != 4) throw new TextFileFormatException("unexpected number of Strings in line"); - for(String s : a) if(s.isEmpty()) throw new TextFileFormatException("empty attribute"); - - + for (List a : datenbasis) { + if (a.size() != 4) throw new TextFileFormatException("unexpected number of Strings in line"); + for (String s : a) if (s.isEmpty()) throw new TextFileFormatException("empty attribute"); vorlesungen.add(new Vorlesung(a)); } @@ -22,22 +24,30 @@ public class Vorlesungsverzeichnis { private List> load(String filename) throws IOException { List> result = new ArrayList<>(); BufferedReader br = new BufferedReader(new FileReader(filename)); - for (String line=br.readLine(); line!=null; line=br.readLine()) + for (String line = br.readLine(); line != null; line = br.readLine()) result.add(Arrays.asList(line.split(":"))); br.close(); return result; } public List titles() { + /* List list = new ArrayList<>(); for(Vorlesung v: this.vorlesungen) { list.add(v.getTitle()); } Collections.sort(list); return list; + + */ + List list = new ArrayList<>(); + vorlesungen.forEach(vorlesung -> list.add(vorlesung.getTitle())); + Collections.sort(list); + return list; } public Set workaholics() { + /* Set s = new HashSet<>(); List list = new ArrayList<>(); for(Vorlesung v:vorlesungen) { @@ -49,18 +59,28 @@ public class Vorlesungsverzeichnis { } Collections.sort(list); return new HashSet<>(list); + + */ + + Map> map = vorlesungen.stream().collect(Collectors.groupingBy(Vorlesung::getDozent, Collectors.mapping(Vorlesung::getTitle, Collectors.toSet()))); + Set set = new HashSet<>(); + map.forEach((s, strings) -> { + if(strings.size() >= 2) set.add(s); + }); + return set; } public Map> groupToTitles() { + /* Map> map = new HashMap<>(); List list = new ArrayList<>(); Set s = new HashSet<>(); - for(Vorlesung v:vorlesungen) { + for (Vorlesung v : vorlesungen) { s.add(v.getStudiengruppe()); } - for(String gruppe : s) { - for(Vorlesung v : vorlesungen) { - if(gruppe.equals(v.getStudiengruppe())) { + for (String gruppe : s) { + for (Vorlesung v : vorlesungen) { + if (gruppe.equals(v.getStudiengruppe())) { list.add(v.getTitle()); } } @@ -69,18 +89,23 @@ public class Vorlesungsverzeichnis { list = new ArrayList<>(); } return map; + */ + Map> map = vorlesungen.stream().collect(Collectors.groupingBy(Vorlesung::getStudiengruppe, Collectors.mapping(Vorlesung::getTitle, Collectors.toList()))); + map.forEach((s, strings) -> Collections.sort(strings)); + return map; } public Map> multipleTitles() { + /* Map> map = new HashMap<>(); List list = new ArrayList<>(); Set s = new HashSet<>(); - for(Vorlesung v:vorlesungen) { + for (Vorlesung v : vorlesungen) { s.add(v.getTitle()); } - for(String title : s) { - for(Vorlesung v:vorlesungen) { - if(title.equals(v.getTitle())) { + for (String title : s) { + for (Vorlesung v : vorlesungen) { + if (title.equals(v.getTitle())) { list.add(v.getDozent()); } } @@ -89,13 +114,21 @@ public class Vorlesungsverzeichnis { list = new ArrayList<>(); } List l = new ArrayList<>(map.keySet()); - for(String title:l) { - if(map.get(title).size() < 2) map.remove(title); + for (String title : l) { + if (map.get(title).size() < 2) map.remove(title); } return map; + */ + Map> map = vorlesungen.stream().collect(Collectors.groupingBy(Vorlesung::getTitle, Collectors.mapping(Vorlesung::getDozent, Collectors.toList()))); + map.forEach((s, strings) -> Collections.sort(strings)); + + + return map; + } public List descendingTitles() { + /* List l = new ArrayList<>(); List vl = new ArrayList<>(vorlesungen); int most=0, index=0; @@ -111,5 +144,19 @@ public class Vorlesungsverzeichnis { vl.remove(index); } return l; + + */ + SortedSet set = new TreeSet<>(this.reversed()); + set.addAll(vorlesungen); + + List list = new ArrayList<>(); + set.forEach(vorlesung -> list.add(vorlesung.getTitle())); + + return list; } -} + + @Override + public int compare(Vorlesung o1, Vorlesung o2) { + return Integer.compare(o1.getTeilnehmerzahl(), o2.getTeilnehmerzahl()); + } +} \ No newline at end of file diff --git a/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java b/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java index de430d0..11eb8f6 100644 --- a/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java +++ b/src/test/java/de/joethei/hs/java2/tests/VorlesungsverzeichnisTest.java @@ -81,8 +81,8 @@ public class VorlesungsverzeichnisTest { Map> map = vorlesungsverzeichnis.multipleTitles(); List math = new ArrayList<>(); - math.add("von Coelln"); math.add("Rabe"); + math.add("von Coelln"); Collections.sort(math); assertEquals(map.get("Mathematik 2"), math);