Real lifefp

Click here to load reader

  • date post

    02-Jul-2015
  • Category

    Software

  • view

    290
  • download

    0

Embed Size (px)

description

Functional Java

Transcript of Real lifefp

  • 1. Real Life FP2...zurck in der Java WeltJUG Bielefeld, 19.11.14 1

2. Wie finden wir ein Element in einerCollection?JUG Bielefeld, 19.11.14 2 3. Java, the good ol days Collections, wie war das noch? < Java5 Iterator while(iterator.hasNext()) > Java5 for-each Loop for(Typ typ : typCollection)JUG Bielefeld, 19.11.14 3 4. Java, the good ol days ActionListener Comparator Runnable CallableGemeinsamkeiten?JUG Bielefeld, 19.11.14 4 5. Java, the good ol days Single Abstract Method Interfaces (SAMInterfaces) Genau eine Methodendeklaration Wird hufig als anonyme innere KlasseverwendetJUG Bielefeld, 19.11.14 5 6. Java, the good ol days Funktionale Vorfahren in Java:findElement(Collection, Predicate)findElement(people, new Predicate() {public boolean test(Person person) {return person.getName().startsWith(...);}}JUG Bielefeld, 19.11.14 6 7. Google GuavaJUG Bielefeld, 19.11.14 7 8. Google Guava Base Objects.equals/hashCode, PreconditionsPrimitives, CharMatcher, Splitter, Joiner, ... Collections groovy-like Collection Handling in Java Caches, I/O, EventBus, Hashing, ...JUG Bielefeld, 19.11.14 8 9. Google Guava Functions und Predicates Function B apply(A input) Transformation! Predicate boolean apply(T input) Filter!JUG Bielefeld, 19.11.14 9 10. Google Guava!JUG Bielefeld, 19.11.14 10 11. Google GuavaLets see some code!JUG Bielefeld, 19.11.14 11 12. Java 8JUG Bielefeld, 19.11.14 12 13. Java 8 Java wird funktional (unter anderem...) FunctionalInterface Und darauf aufbauend... Streams APIJUG Bielefeld, 19.11.14 13 14. Java 8 Erinnert ihr euch an SAM? Anstatt:new Predicate() {@Overridepublic boolean apply(T input) {return input.isFoo();}} Einfach:( input -> input.isFoo() )JUG Bielefeld, 19.11.14 14 15. Java 8 Wie geht das?FunctionalInterface Ein funktionales Interface darf genau EINEMethode deklarieren (...mit Ausnahme von default Methoden) Mittels der Annotation @FunctionalInterface wirdein normales Interface funktionalJUG Bielefeld, 19.11.14 15 16. Java 8 Beispiel Predicate:@FunctionalInterfacepublic interface Predicate {boolean test(T t);} Verwendung:( obj -> obj.isFoo() )JUG Bielefeld, 19.11.14 16 17. Java 8 Streams API A sequence of elements supporting sequentialand parallel aggregate operations Stream pipelines bestehen aus Einer Datenquelle und 0 oder mehr intermediate und genau einer terminal OperationJUG Bielefeld, 19.11.14 17 18. Java 8Lets see some code!JUG Bielefeld, 19.11.14 18 19. Quellen Google Guava: https://code.google.com/p/guava-libraries/wiki/GuavaExplained Und insbesondere: https://code.google.com/p/guava-libraries/wiki/FunctionalExplained Java 8 http://www.oracle.com/technetwork/articles/java/lambda-1984522.html http://www.angelikalanger.com/Articles/EffectiveJava/70.Java8.FunctionalProg/70.Java8.FunctionalProg.html Code https://github.com/smartsquare/RealLifeFPJUG Bielefeld, 19.11.14 19