Commit 30c3d84a by Patryk Czarnik

proste filter i map

parent 50858cc8
package emps.strumieniowo;
import java.util.List;
public class FilterMap {
// Operacje na strumieniach zwykle łączy się w tzw. "pipeline", który:
// - zaczyna się od operacji tworzącej strumień
// - dalej posiada 0 lub więcej operacji pośrednich
// - na końcu ma operację terminującą.
// W tym przykładzie przeplatamy najbardziej standardowe operacje na strumieniach:
// filter - sprawdza czy element strumienia spełnia warunek i tylko jeśli tak, to przepuszcza do następnego etapu
// map - na podstawie elementu wejściowego zwraca jakiś wynik, który jest przekazywany do nast. etapu
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj("emps.csv");
emps.stream()
.filter(emp -> emp.getSalary() >= 10000)
.filter(emp -> "Seattle".equals(emp.getCity()))
.map(emp -> emp.getFirstName() + " " + emp.getLastName())
.filter(s -> s.contains("a"))
.map(s -> s.toUpperCase())
.forEach(s -> System.out.println(s));
}
}
package emps.strumieniowo;
import java.util.List;
public class FilterMap_v2 {
// Operacje na strumieniach zwykle łączy się w tzw. "pipeline", który:
// - zaczyna się od operacji tworzącej strumień
// - dalej posiada 0 lub więcej operacji pośrednich
// - na końcu ma operację terminującą.
// W tym przykładzie przeplatamy najbardziej standardowe operacje na strumieniach:
// filter - sprawdza czy element strumienia spełnia warunek i tylko jeśli tak, to przepuszcza do następnego etapu
// map - na podstawie elementu wejściowego zwraca jakiś wynik, który jest przekazywany do nast. etapu
// W tej wersji tam, gdzie można, zamiast wyrażenia lambda -> zastosujemy method reference ::
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj("emps.csv");
emps.stream()
.filter(emp -> emp.getSalary() >= 10000)
.filter(emp -> "Seattle".equals(emp.getCity()))
.map(emp -> emp.getFirstName() + " " + emp.getLastName())
.filter(s -> s.contains("a"))
.map(String::toUpperCase)
.forEach(System.out::println);
}
}
package emps.strumieniowo;
import java.util.List;
// W tym przykładzie z listy pobierany jest obiekt "stream",
// a dopiero na nim wywołujemy forEach.
// Wydaje się to bez sensu, bo forEach działa dla listy (zob. wersję 0),
// ale stream() daje dostęp do wielu dodatkowych operacji, co zobaczymy w nast. przykładach.
public class P1_WypiszZeStrumienia {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj("emps.csv");
emps.stream().forEach(emp ->
System.out.printf("Pracownik %s %s (%s) zarabia %d\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary()));
}
}
package emps.strumieniowo;
import java.util.List;
public class P2_WypiszBogatych {
public static void main(String[] args) {
List<Employee> emps = ObslugaCSV.wczytaj("emps.csv");
emps.stream()
.filter(emp -> emp.getSalary() >= 10000)
.forEach(emp -> System.out.printf("Pracownik %s %s (%s) zarabia %d\n",
emp.getFirstName(), emp.getLastName(), emp.getJobTitle(), emp.getSalary()));
}
}
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