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