Commit c656097a by Patryk Czarnik

streamy technicznie - początek

parent a7383c30
package p18_streamy;
import java.util.ArrayList;
import java.util.List;
public class A1_TypowyPrzyklad {
public static void main(String[] args) {
List<String> list = new ArrayList<>(List.of("Ala", "Barbara", "Łucja", "Marek", "Andrzej", "Ola", "Żaneta", "Tomasz", "Patryk", "Barbara"));
System.out.println(list);
System.out.println();
// To jest "pipeline", na który składają się:
// - źródło danych
// - operacje pośrednie (intermediate operation)
// - operacja końcowa (terminal operation)
list.stream()
.filter(s -> s.length() > 3)
.map(String::toUpperCase)
.sorted()
.distinct()
.forEach(System.out::println);
}
}
package p18_streamy;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class A2_KrokPoKroku {
static boolean sprawdz(String s) {
System.out.println("Sprawdzam " + s);
return s.length() > 3;
}
static String mapuj(String s) {
System.out.println("Mapuję " + s);
return s.toUpperCase();
}
public static void main(String[] args) {
List<String> list = new ArrayList<>(List.of("Ala", "Barbara", "Łucja", "Marek", "Andrzej", "Ola", "Żaneta", "Tomasz", "Patryk", "Barbara"));
System.out.println(list);
System.out.println();
// W tym przykładzie wynik każdej kolejnej operacji na strumieniu zapisuję w pomocniczych zmiennych.
Stream<String> stream1 = list.stream();
System.out.println("stream1: " + stream1);
Stream<String> stream2 = stream1.filter(A2_KrokPoKroku::sprawdz);
System.out.println("stream2: " + stream2);
Stream<String> stream3 = stream2.map(A2_KrokPoKroku::mapuj);
System.out.println("stream3: " + stream3);
System.out.println("Dodaję dodatkowy element");
list.add("Ostatni");
System.out.println("\nTeraz wykonam forEach:\n");
stream3.forEach(System.out::println);
try {
System.out.println("\nPróba ponownego uruchomienia tego samego strumienia:");
stream3.forEachOrdered(System.out::println);
} catch (Exception e) {
System.out.println(e);
}
}
}
package p18_streamy;
import java.util.ArrayList;
import java.util.List;
public class A3_Limit_Par {
static boolean sprawdz(String s) {
System.out.println("Sprawdzam " + s);
return s.length() > 3;
}
static String mapuj(String s) {
System.out.println("Mapuję " + s);
return s.toUpperCase();
}
public static void main(String[] args) {
List<String> list = new ArrayList<>(List.of("Ala", "Barbara", "Łucja", "Marek", "Andrzej", "Ola", "Żaneta", "Tomasz", "Patryk", "Barbara"));
System.out.println(list);
System.out.println();
list.parallelStream()
.filter(A3_Limit_Par::sprawdz)
.map(A3_Limit_Par::mapuj)
.limit(5)
.forEach(System.out::println);
// limit bierze pod uwagę kolejność elementów i w końcowym zbiorze znajdują się wciąż te same osoby,
// ale forEach nie zachowuje kolejności ich wypisywania
}
}
package p18_streamy;
import java.util.ArrayList;
import java.util.List;
public class A3_Limit_ParOrdered {
static boolean sprawdz(String s) {
System.out.println("Sprawdzam " + s);
return s.length() > 3;
}
static String mapuj(String s) {
System.out.println("Mapuję " + s);
return s.toUpperCase();
}
public static void main(String[] args) {
List<String> list = new ArrayList<>(List.of("Ala", "Barbara", "Łucja", "Marek", "Andrzej", "Ola", "Żaneta", "Tomasz", "Patryk", "Barbara"));
System.out.println(list);
System.out.println();
list.parallelStream()
.filter(A3_Limit_ParOrdered::sprawdz)
.map(A3_Limit_ParOrdered::mapuj)
.limit(5)
.forEachOrdered(System.out::println);
// limit bierze pod uwagę kolejność elementów i w końcowym zbiorze znajdują się wciąż te same osoby,
// forEachOrdered zachowa róœnież kolejność podczas wypisywania
}
}
package p18_streamy;
import java.util.ArrayList;
import java.util.List;
public class A3_Limit_ParUnordered {
static boolean sprawdz(String s) {
System.out.println("Sprawdzam " + s);
return s.length() > 3;
}
static String mapuj(String s) {
System.out.println("Mapuję " + s);
return s.toUpperCase();
}
public static void main(String[] args) {
List<String> list = new ArrayList<>(List.of("Ala", "Barbara", "Łucja", "Marek", "Andrzej", "Ola", "Żaneta", "Tomasz", "Patryk", "Barbara"));
System.out.println(list);
System.out.println();
list.parallelStream()
.unordered()
.filter(A3_Limit_ParUnordered::sprawdz)
.map(A3_Limit_ParUnordered::mapuj)
.limit(5)
.forEach(System.out::println);
// teraz limit ani forEach (nawet gdyby był Ordered) nie biorą pod uwagę kolejności
// i zestaw imion wypisywanych na końcu może się różnić w kolejnych uruchomieniach
}
}
package p18_streamy;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Stream;
public class A3_Limit_Seq {
static boolean sprawdz(String s) {
System.out.println("Sprawdzam " + s);
return s.length() > 3;
}
static String mapuj(String s) {
System.out.println("Mapuję " + s);
return s.toUpperCase();
}
public static void main(String[] args) {
List<String> list = new ArrayList<>(List.of("Ala", "Barbara", "Łucja", "Marek", "Andrzej", "Ola", "Żaneta", "Tomasz", "Patryk", "Barbara"));
System.out.println(list);
System.out.println();
list.stream()
.filter(A3_Limit_Seq::sprawdz)
.map(A3_Limit_Seq::mapuj)
.limit(5)
.forEach(System.out::println);
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment