java 2
Von Oracle Certified Professional Java SE 8 Programmer 2 Study guide - Jeanne Boyarsky and Scott Selikoff
Von Oracle Certified Professional Java SE 8 Programmer 2 Study guide - Jeanne Boyarsky and Scott Selikoff
Set of flashcards Details
Flashcards | 500 |
---|---|
Language | Deutsch |
Category | Computer Science |
Level | University |
Created / Updated | 03.03.2020 / 22.06.2022 |
Weblink |
https://card2brain.ch/box/20200303_java_2
|
Embed |
<iframe src="https://card2brain.ch/box/20200303_java_2/embed" width="780" height="150" scrolling="no" frameborder="0"></iframe>
|
Was passiert wenn computeIfPresent aufgerufen wird und die mappingfunktion null returned?
Der Key wird von der map gelöscht
Was passiert wenn computeIfAbsent aufgerufen wird und die mappingfunktion null returned?
Der Key wird nicht der map hinzugefügt
Wie schaut die map am ende aus?:
Map<String, Integer> counts = new HashMap<>();
counts.put("Jenny", 1);
counts.computeIfPresent("Jenny", (k, v) -> null);
counts.computeIfAbsent("Sam", k -> null);
System.out.println(counts); // {}
Sie ist leer -> mapper returnen null
Was für Variablen können Lambdas accessen?
static variables, instance variables, effective final method parameters, effectively final local variables
Was für common functional interfaces gibt es im package java.util.function?
- Supplier<T>
- Consumer<T>
- BiConsumer<T,U>
- Predicate<T>
- BiPredicate<T,U>
- Function<T,R>
- BiFunction<T,U,R>
- UnaryOperator<T>
- BinaryOperator<T>
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface Supplier?
0 params, returntype t, get als single abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface Consumer?
1 Pararmeter ( T), void return, accept abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface BiConsumer?
2 params(T,U), void return, accept abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface Predicate?
1 Param(T), boolean return, test abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface BiPredicate?
2 Params (T,U), boolean return, test abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface Function?
1 param (T), R return type, apply abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface BiFunction?
2 Params (T,U), R returntype, apply abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface UnaryOperator?
1 param (T), returntype T, apply abstract method
Wieviele Parameter, was für einen Returntype und was für eine Single abstract Method hat das FunctionaInterface BinaryOperator?
2 params (T,T), returntype T, abstract method apply
Wann wird das Functional interface Supplier benutzt?
Wenn man values generieren/supplyen möchte ohne irgendeinen input zu benötigen
Was macht folgender Code?
Supplier<LocalDate> s1 = LocalDate::now;
Supplier<LocalDate> s2 = () -> LocalDate.now();
LocalDate d1 = s1.get();
LocalDate d2 = s2.get();
System.out.println(d1);
System.out.println(d2);
Gibt zwei mal das aktuelle datum aus
Abstrakt gesehen: Was macht ein Consumer/BiConsumer?
Nimmt einen/zwei Parameter, verarbeitet ihn aber returned nichts
Wie lässt sich das schöner schreiben?:
Predicate<String> egg = s -> s.contains("egg");
Predicate<String> brown = s -> s.contains("brown");
Predicate<String> brownEggs = s -> s.contains("egg") && s.contains("brown");
Predicate<String> otherEggs = s -> s.contains("egg") && ! s.contains("brown");
Predicate<String> egg = s -> s.contains("egg");
Predicate<String> brown = s -> s.contains("brown");
Predicate<String> brownEggs = egg.and(brown);
Predicate<String> otherEggs = egg.and(brown.negate());
Was ist der returntype von Function<String, Integer> ?
Integer
Was ist das besondere bei unary und binaryOperator (functinal interface)?
Alle typeparameter müssen gleich sein(unary bspw. für incrementing, binary für addition, ..)
Wie lässt sihc das mit einem BinaryOperator schreiben?:
BiFunction<String, String, String> b2 = (string, toAdd) -> string.concat(toAdd);
BinaryOperator<String> b2 = (string, toAdd) -> string.concat(toAdd);
Was für ein funcitonal interface für folgende aussagen?:
- returned string, kein parameter
- returned Boolean, string parameter
- returned integer, zwei integer parameter
- supplier
- function (Predicate retunred predicate, nicht object)
- binaryOperator oder binaryFunction (besser operator)
Welche Functional interfaces passen hier?
6: _____<List> ex1 = x -> "".equals(x.get(0));
7: _____<Long> ex2 = (Long l) -> System.out.println(l);
8: _____ <String, String> ex3 = (s1, s2) -> false;
6: Predicate oder function
7: Consumer
8: BiPredicate
Compilen die functions?
6: Function<List<String>> ex1 = x -> x.get(0);
7: UnaryOperator<Long> ex2 = (Long l) -> 3.14;
8: Predicate ex4 = String::isEmpty;
Nein!
6: Function muss parameter und returntype definiern
7: unaryOperator returns same type as passed in -> hier aber double, nicht long
8: Keine Generics -> Object wird gepassed, object hat aber keine funktion isEmpty
Was gibt es für InstanzMethoden auf Optionals?
- get()
- ifPresent(Consumer c)
- isPresent()
- orElse(T other)
- orElseGet(Supplier s)
- orElseThrow(Supplier s)
Was wird hier ausgegeben?
Optional<Double> opt = average(90, 100);
System.out.println(opt.orElse(Double.NaN));
System.out.println(opt.orElseGet(() -> Math.random()));
System.out.println(opt.orElseThrow(() -> new IllegalStateException()));
Drei Mal 95
Wie erzeugt man einen leeren Stream?
Stream.empty()
Wie erzeugt man einen Stream mit ein paar zahlen (bspw. 1,2,3)?
Stream.of(1,2,3) -> nutzt varags
Wie erzeugt man einen Stream mit beliebig vielen random zahlen?
Stream.generate(Math::random)
Wie erzeugt man einen Stream mit beliebig vielen geraden zahlen?
Stream.iterate(1,n -> n +2)
Was macht stream.count? was passiert auf infinite streams?
Zählt die elemente, bei infinite streams unendlich lange
Was macht stream.min() oder max()? Was passiert bei infinite streams?
finden das kleinste/ größte element anhand der sortierreihenfolge. Bei infinite streams wird ewig gesucht.#
Optional<T> min(? super T> comparator)
Optional<T> max(? super T> comparator)
Was ist die Ausgabe davon?:
Optional<?> minEmpty = Stream.empty().min((s1, s2) -> 0);
System.out.println(minEmpty.isPresent());
false -> stream ist empty also wird comparator auch nie ausgeführt
Was returnen findAny und findFirst bei streams? was passiert bei infinite streams?
returnen ein element des streams, wenn stream leer dann ein leeres optional. funktionieren bei infinite streams
findAny ist nützlich bei parallel streams
Was macht allMatch, anyMatch, noneMatch bei streams? was passiert bei infinite streams?
suchen elemente anhand eines predicates im stream. bei infinite streams hängt es von den daten ab ob sie returnen oder nicht.
boolean anyMatch(Predicate <? super T> predicate)
Was passiert bei forEach auf infinite streams? Was für einen parameter nimmt forEach?
terminiert nicht bei infinite streams
void forEach(Consumer<? super T> action)
Funktioniert das?:
Stream s = Stream.of(1);
for (Integer i: s) {}
Nein, müsste stream.forEach verwenden da Streams nicht das Iterable interface implementieren
Was ist der output hier? Wie kann der BiOperator noch geschrieben werden?
Stream<String> stream = Stream.of("w", "o", "l", "f");
String word = stream.reduce("", (s, c) -> s + c);
System.out.println(word);
"wolf"
String::concat
Wie könnte eine reduction ausschauen die alle Integer objekte in einem -stream mit den Werten 3,5,6 multipliziert?
Stream<Integer> stream = Stream.of(3,5,6);
System.out.println(stream.reduce(1, a,b) -> a*b));
Was passiert bei reduce wenn
- der stream empty ist
- der stream ein element hat
- der Stream mehrere Elemente hat?
- leeres Optional wird zurückgegeben
- das eine Element wird zurückgegeben
- der Accumulator wird angewendet