Das Horrorblatt vor Weihnachten Gerald Mahlknecht Technische Universitt
Das Horrorblatt vor Weihnachten Gerald Mahlknecht Technische Universität München
Chaining new Dialog(). set. Message("some message"). set. Title("some title")). show(); Alle Methoden machen folgendes: • this. mache. Etwas. Mit. Den. Parametern • return this mit den neu gesetzten Eigenschaften private Dialog set. Message(String msg) { this. msg = msg; return this; }
Lambda Einführung List<String> my. List = Arrays. as. List("element 1", "element 2", "element 3"); for (String element : my. List) { System. out. println (element); } PROBLEM: Kann nicht parallelisiert werden (Threads)
Collection – Iterable Interface my. List. for. Each( new Consumer<String>() { public void accept(String element) { System. out. println(element); } } ); my. List. for. Each((String element) -> System. out. println(element));
Collection<String>my. List = Arrays. as. List("Hello", "Java"); long count. Long. Strings = my. List. stream(). filter( new Predicate<String>() { @Override public boolean test(String element) { return element. length() > 4; } } ). count();
Pipes and Filters Filter Pipe/Stream collect()
Collection<String> my. List = Arrays. as. List("Hello", "Java"); long count. Long. Strings = my. List. stream(). filter(element -> element. length() > 4). count();
Boxed; Map und Collect Int. Stream. range(start, ende_exklusive). boxed() liefert alle Elemente des Streams einzeln Map: . map(variable -> Abbildung der Variable) <- gibt das was mit der Variable passiert zu tun. Collect: . collect(Collectors. to. List()) Collectors. joining("n") Endlich ein Beispiel: Int. Stream. range(2010, 2018). boxed(); -> [2010; 2011; 2012; 2013…; 2017]. map(year -> year + 1) -> [2011; 2012; 2013; 2014…; 2018]
Als Text: Das; ist; ein; Test; 3n Lol
Datei Lesen try { Input. Stream input. Stream = new File. Input. Stream(csv. File); Buffered. Reader reader = new Buffered. Reader(new Input. Stream. Reader(input. Stream)); … reader. close(); // <- Das ist ein sehr wichtiger Punkt } catch (IOException e) { System. out. println("File " + csv. File + " not found. "); return null; } • reader. lines() -> liefert Stream von Zeilen in CSV-Datei • line. split(“; “) -> liefert Array von einzelnen Zellen
Datei schreiben try { if (file. exists()) file. delete(); Print. Writer out = new Print. Writer(file); out. print(string); out. close(); //<- wichtig } catch (File. Not. Found. Exception e) { System. out. println("File not found: " + file); }
Klasse A, B, C, . . . (Kann vererbt werden) public void accept(Visitor visitor) { visitor. visit(this); }
Visitor Klasse visit(A a) { //machewas } visit(B b) { //machewas } visit(C c) { //machewas } …
Beispiele
Der Interpreter • Parsen • In: A. java Out: Program als Objekt • Übersetzen • In: Program als Objekt Out: Assembly • Interpretieren • In: Assembly Out: Ausfühung des Programms
Wir implementieren eine Stackmaschine Stack 7 6 5 4 3 2 1 SP = Stack. Pointer 0 -1
IN Stack 7 6 5 4 3 2 1 SP 0 IN-Wert
IN Stack 7 6 5 4 3 2 SP 1 IN-Wert o 1 0 IN-Wert o 2
ADD Stack 7 6 5 4 3 2 1 SP 0 ADD-Wert
OUT – Gibt aus und nimmt vom Stack! Stack 7 6 5 4 3 2 1 SP 0 Konsole: ADD-Wert
LDI 0 LDI hat Immediate (Siehe Tabelle) Stack 7 6 5 4 3 2 1 SP 0 0 Konsole: ADD-Wert
- Slides: 22