Capitolul 3 - Streams API Flashcards
Ce face Consumer?
primeste o valoare si nu returneaza nimic (o consuma)
Ce face BiConsumer?
primeste 2 valori si nu returneaza nimic (le consuma)
Ce face Predicate?
primeste o valoare si returneaza true sau false
Ce face BiPredicate?
primeste 2 valori si returneaza true sau false
Ce face Supplier ?
nu primeste nimic dar returneaza o valoare
Ce face Function?
primeste o valoare si returneaza o valoare
Ce face BiFunction?
primeste 2 valori si returneaza o valoare
Ce face UnaryOperator?
primeste o valoare si returneaza o valoare de acelasi tip ca a celei primite
Ce face BinaryOperator?
primeste 2 valori si returneaza o valoare de acelasi tip ca a celei primite
In ce pachet sunt incluse interfetele Consumer, Supplier etc?
java.util.function
Ce face IntFunction ?
este un Function care primeste un int si returneaza ceva
Ce face ToIntFunction?
este un Function care primeste ceva si returneaza un int.
Ce face LongToIntFunction?
este un Function care primeste un long si returneaza un int.
In ce pachet sunt incluse streams api?
java.util.stream
Cum retunrezi un stream gol?
Stream s1 = Stream.empty();
Ce face instructiunea de mai jos ? Ce interfata este folosita?
Stream.iterate(1,i->i+2);
iterate genereaza un stream infinit de numele impare incepand cu 1.
este folosit un UnaryOperator deoarece primeste o valoare si retuneaza o valoare de acelasi tip.
Ce face instructiunea de mai jos ? Ce interfata este folosita?
Stream.generate(()->1);
generate genereaza un stream infinit alcatuit din 1.
este folosit un supplier - nu primeste nimic dar returneaza ceva
Ce face instructiunea de mai jos ?
Stream.of(1,22,5,10);
Creeaza un stream alcatuit din 1,22,5,10.
am lista de stringuri de mai jos
List list = List.of(“aaa”,”b”,”cc”,”d”);
Cum pot sa afisez suma lungimilor stringurilor.
int sum= list.stream() .map(s->s.length()) .reduce(0,(a,b)->a+b); System.out.println(sum);
cum afisez toate randurile dintr-un fisier care incep cu “ra”.
Path p = Paths.get(“./src/file1.txt”);
BufferedReader br = Files.newBufferedReader(p);
try(br){
long count= Stream.generate(()->read(br))
.takeWhile(Objects::nonNull)
.filter(line->line.startsWith(“ra”))
.count();
System.out.println(count);
}
}
private static String read(BufferedReader br){ try{ return br.readLine(); }catch (IOException e){ return null; } }
Folosind stream-uri afisati in consola numelere pare, in ordine crescatoare si fara valori duplicate
List list = List.of(4,5,3,2,4);
list.stream() .filter(i->i%2==0) .distinct() .sorted() .forEach(System.out::println);
Descrieti ce face fiecare linie de cod de mai jos.
List list = List.of(“aa”,”bc”,”ad”,”bec”);
long count = list.stream()
.map(s -> s.split(“\s*”))
.map(sa -> List.of(sa))
.flatMap(ls -> ls.stream())
.filter(c -> “aeiou”.contains(c))
.count();
primul map sparge fiecare membru al stremului intr-un array de stringuri
al2lea map transforma fiecare array intr-o colectie
fat map-ul - mapeaza listele date la stream si concateneaza stream-urile rezultate obtinand unul singur. In acest moment avem un stream cu toate literele existente in stringurile initiale.
Ce face a2a instructiune de mai jos
List list = List.of(1,2,3,5,7);
list.stream().allMatch(i->i%2!=0);
Returneaza un boolean: true daca toate elementele din stream respecta conditia dintre paranteze
Ce face a2a instructiune de mai jos
List list = List.of(1,2,3,5,7);
list.stream().anyMath(i->i%2!=0);
Returneaza un boolean: true daca cel putin un element din stream respecta conditia dintre paranteze
Ce face a2a instructiune de mai jos
List list = List.of(1,2,3,5,7);
list.stream().noneMath(i->i%2!=0);
Returneaza un boolean: true daca niciun element din stream nu respecta conditia dintre paranteze
Ce returneaza Optional.empty()
un optional gol
Ce returneaza Optional.of(null)
se va arunca exceptie
Ce returneaza Optional.ofNullable(null)
un optional gol
Ce returneaza Optional.isPresent() ?
returneaza true daca optionalul nu e empty.