From 9fe1770fb4371e2639a37628d4f5da67073b002f Mon Sep 17 00:00:00 2001 From: Pdvlp Date: Thu, 30 Jul 2015 13:35:10 +0800 Subject: [PATCH 01/19] become to a maven project easier to import and compiler --- .gitignore | 8 ++++- pom.xml | 31 +++++++++++++++++++ .../java8/samples/concurrent/Atomic1.java | 0 .../concurrent/CompletableFuture1.java | 0 .../concurrent/ConcurrentHashMap1.java | 0 .../samples/concurrent/ConcurrentUtils.java | 0 .../java8/samples/concurrent/Executors1.java | 0 .../java8/samples/concurrent/Executors2.java | 0 .../java8/samples/concurrent/Executors3.java | 0 .../java8/samples/concurrent/Lock1.java | 0 .../java8/samples/concurrent/Lock2.java | 0 .../java8/samples/concurrent/Lock3.java | 0 .../java8/samples/concurrent/Lock4.java | 0 .../java8/samples/concurrent/Lock5.java | 0 .../java8/samples/concurrent/Lock6.java | 0 .../samples/concurrent/LongAccumulator1.java | 0 .../java8/samples/concurrent/LongAdder1.java | 0 .../java8/samples/concurrent/Semaphore1.java | 0 .../java8/samples/concurrent/Semaphore2.java | 0 .../samples/concurrent/Synchronized1.java | 0 .../samples/concurrent/Synchronized2.java | 0 .../java8/samples/concurrent/Threads1.java | 0 .../java8/samples/lambda/Interface1.java | 0 .../java8/samples/lambda/Lambda1.java | 0 .../java8/samples/lambda/Lambda2.java | 0 .../java8/samples/lambda/Lambda3.java | 0 .../java8/samples/lambda/Lambda4.java | 0 .../winterbe/java8/samples/lambda/Person.java | 0 .../java8/samples/misc/Annotations1.java | 0 .../java8/samples/misc/CheckedFunctions.java | 0 .../java8/samples/misc/Concurrency1.java | 0 .../winterbe/java8/samples/misc/Files1.java | 0 .../winterbe/java8/samples/misc/Maps1.java | 0 .../winterbe/java8/samples/misc/Math1.java | 0 .../winterbe/java8/samples/misc/String1.java | 0 .../java8/samples/nashorn/Nashorn1.java | 0 .../java8/samples/nashorn/Nashorn10.java | 0 .../java8/samples/nashorn/Nashorn11.java | 0 .../java8/samples/nashorn/Nashorn2.java | 0 .../java8/samples/nashorn/Nashorn3.java | 0 .../java8/samples/nashorn/Nashorn4.java | 0 .../java8/samples/nashorn/Nashorn5.java | 0 .../java8/samples/nashorn/Nashorn6.java | 0 .../java8/samples/nashorn/Nashorn7.java | 0 .../java8/samples/nashorn/Nashorn8.java | 0 .../java8/samples/nashorn/Nashorn9.java | 0 .../java8/samples/nashorn/Product.java | 0 .../java8/samples/nashorn/SuperRunner.java | 0 .../java8/samples/stream/Optional1.java | 0 .../java8/samples/stream/Optional2.java | 0 .../java8/samples/stream/Streams1.java | 0 .../java8/samples/stream/Streams10.java | 0 .../java8/samples/stream/Streams11.java | 0 .../java8/samples/stream/Streams12.java | 0 .../java8/samples/stream/Streams13.java | 0 .../java8/samples/stream/Streams2.java | 0 .../java8/samples/stream/Streams3.java | 0 .../java8/samples/stream/Streams4.java | 0 .../java8/samples/stream/Streams5.java | 0 .../java8/samples/stream/Streams6.java | 0 .../java8/samples/stream/Streams7.java | 0 .../java8/samples/stream/Streams8.java | 0 .../java8/samples/stream/Streams9.java | 0 .../java8/samples/time/LocalDate1.java | 0 .../java8/samples/time/LocalDateTime1.java | 0 .../java8/samples/time/LocalTime1.java | 0 66 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 pom.xml rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Atomic1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/CompletableFuture1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Executors1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Executors2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Executors3.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Lock1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Lock2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Lock3.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Lock4.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Lock5.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Lock6.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/LongAccumulator1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/LongAdder1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Semaphore1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Semaphore2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Synchronized1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Synchronized2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/concurrent/Threads1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/lambda/Interface1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/lambda/Lambda1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/lambda/Lambda2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/lambda/Lambda3.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/lambda/Lambda4.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/lambda/Person.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/misc/Annotations1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/misc/CheckedFunctions.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/misc/Concurrency1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/misc/Files1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/misc/Maps1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/misc/Math1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/misc/String1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn10.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn11.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn3.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn4.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn5.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn6.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn7.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn8.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Nashorn9.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/Product.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/nashorn/SuperRunner.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Optional1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Optional2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams10.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams11.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams12.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams13.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams2.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams3.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams4.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams5.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams6.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams7.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams8.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/stream/Streams9.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/time/LocalDate1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/time/LocalDateTime1.java (100%) rename src/{ => main/java}/com/winterbe/java8/samples/time/LocalTime1.java (100%) diff --git a/.gitignore b/.gitignore index 77642f01..82bf54cc 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,10 @@ .DS_Store .idea *.iml -out \ No newline at end of file +out +/target/ + +.settings/org.eclipse.jdt.core.prefs +.settings/org.eclipse.m2e.core.prefs +.project +.classpath \ No newline at end of file diff --git a/pom.xml b/pom.xml new file mode 100644 index 00000000..a6fd6974 --- /dev/null +++ b/pom.xml @@ -0,0 +1,31 @@ + + + 4.0.0 + com.winterbe + java8-tutorial + 1.0.0 + + + + junit + junit + 4.12 + test + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.0 + + 1.8 + 1.8 + + + + + diff --git a/src/com/winterbe/java8/samples/concurrent/Atomic1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Atomic1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Atomic1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Atomic1.java diff --git a/src/com/winterbe/java8/samples/concurrent/CompletableFuture1.java b/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/CompletableFuture1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java diff --git a/src/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java diff --git a/src/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java rename to src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java diff --git a/src/com/winterbe/java8/samples/concurrent/Executors1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Executors1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java diff --git a/src/com/winterbe/java8/samples/concurrent/Executors2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Executors2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java diff --git a/src/com/winterbe/java8/samples/concurrent/Executors3.java b/src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Executors3.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java diff --git a/src/com/winterbe/java8/samples/concurrent/Lock1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Lock1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java diff --git a/src/com/winterbe/java8/samples/concurrent/Lock2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Lock2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java diff --git a/src/com/winterbe/java8/samples/concurrent/Lock3.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Lock3.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java diff --git a/src/com/winterbe/java8/samples/concurrent/Lock4.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Lock4.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java diff --git a/src/com/winterbe/java8/samples/concurrent/Lock5.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Lock5.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java diff --git a/src/com/winterbe/java8/samples/concurrent/Lock6.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Lock6.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java diff --git a/src/com/winterbe/java8/samples/concurrent/LongAccumulator1.java b/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/LongAccumulator1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java diff --git a/src/com/winterbe/java8/samples/concurrent/LongAdder1.java b/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/LongAdder1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java diff --git a/src/com/winterbe/java8/samples/concurrent/Semaphore1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Semaphore1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java diff --git a/src/com/winterbe/java8/samples/concurrent/Semaphore2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Semaphore2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java diff --git a/src/com/winterbe/java8/samples/concurrent/Synchronized1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Synchronized1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java diff --git a/src/com/winterbe/java8/samples/concurrent/Synchronized2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Synchronized2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java diff --git a/src/com/winterbe/java8/samples/concurrent/Threads1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java similarity index 100% rename from src/com/winterbe/java8/samples/concurrent/Threads1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java diff --git a/src/com/winterbe/java8/samples/lambda/Interface1.java b/src/main/java/com/winterbe/java8/samples/lambda/Interface1.java similarity index 100% rename from src/com/winterbe/java8/samples/lambda/Interface1.java rename to src/main/java/com/winterbe/java8/samples/lambda/Interface1.java diff --git a/src/com/winterbe/java8/samples/lambda/Lambda1.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda1.java similarity index 100% rename from src/com/winterbe/java8/samples/lambda/Lambda1.java rename to src/main/java/com/winterbe/java8/samples/lambda/Lambda1.java diff --git a/src/com/winterbe/java8/samples/lambda/Lambda2.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda2.java similarity index 100% rename from src/com/winterbe/java8/samples/lambda/Lambda2.java rename to src/main/java/com/winterbe/java8/samples/lambda/Lambda2.java diff --git a/src/com/winterbe/java8/samples/lambda/Lambda3.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java similarity index 100% rename from src/com/winterbe/java8/samples/lambda/Lambda3.java rename to src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java diff --git a/src/com/winterbe/java8/samples/lambda/Lambda4.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java similarity index 100% rename from src/com/winterbe/java8/samples/lambda/Lambda4.java rename to src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java diff --git a/src/com/winterbe/java8/samples/lambda/Person.java b/src/main/java/com/winterbe/java8/samples/lambda/Person.java similarity index 100% rename from src/com/winterbe/java8/samples/lambda/Person.java rename to src/main/java/com/winterbe/java8/samples/lambda/Person.java diff --git a/src/com/winterbe/java8/samples/misc/Annotations1.java b/src/main/java/com/winterbe/java8/samples/misc/Annotations1.java similarity index 100% rename from src/com/winterbe/java8/samples/misc/Annotations1.java rename to src/main/java/com/winterbe/java8/samples/misc/Annotations1.java diff --git a/src/com/winterbe/java8/samples/misc/CheckedFunctions.java b/src/main/java/com/winterbe/java8/samples/misc/CheckedFunctions.java similarity index 100% rename from src/com/winterbe/java8/samples/misc/CheckedFunctions.java rename to src/main/java/com/winterbe/java8/samples/misc/CheckedFunctions.java diff --git a/src/com/winterbe/java8/samples/misc/Concurrency1.java b/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java similarity index 100% rename from src/com/winterbe/java8/samples/misc/Concurrency1.java rename to src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java diff --git a/src/com/winterbe/java8/samples/misc/Files1.java b/src/main/java/com/winterbe/java8/samples/misc/Files1.java similarity index 100% rename from src/com/winterbe/java8/samples/misc/Files1.java rename to src/main/java/com/winterbe/java8/samples/misc/Files1.java diff --git a/src/com/winterbe/java8/samples/misc/Maps1.java b/src/main/java/com/winterbe/java8/samples/misc/Maps1.java similarity index 100% rename from src/com/winterbe/java8/samples/misc/Maps1.java rename to src/main/java/com/winterbe/java8/samples/misc/Maps1.java diff --git a/src/com/winterbe/java8/samples/misc/Math1.java b/src/main/java/com/winterbe/java8/samples/misc/Math1.java similarity index 100% rename from src/com/winterbe/java8/samples/misc/Math1.java rename to src/main/java/com/winterbe/java8/samples/misc/Math1.java diff --git a/src/com/winterbe/java8/samples/misc/String1.java b/src/main/java/com/winterbe/java8/samples/misc/String1.java similarity index 100% rename from src/com/winterbe/java8/samples/misc/String1.java rename to src/main/java/com/winterbe/java8/samples/misc/String1.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn1.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn1.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn1.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn1.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn10.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn10.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn11.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn11.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn11.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn11.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn2.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn2.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn2.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn2.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn3.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn3.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn3.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn3.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn4.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn4.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn4.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn4.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn5.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn5.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn5.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn5.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn6.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn6.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn6.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn6.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn7.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn7.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn7.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn7.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn8.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn8.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn8.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn8.java diff --git a/src/com/winterbe/java8/samples/nashorn/Nashorn9.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn9.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Nashorn9.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Nashorn9.java diff --git a/src/com/winterbe/java8/samples/nashorn/Product.java b/src/main/java/com/winterbe/java8/samples/nashorn/Product.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/Product.java rename to src/main/java/com/winterbe/java8/samples/nashorn/Product.java diff --git a/src/com/winterbe/java8/samples/nashorn/SuperRunner.java b/src/main/java/com/winterbe/java8/samples/nashorn/SuperRunner.java similarity index 100% rename from src/com/winterbe/java8/samples/nashorn/SuperRunner.java rename to src/main/java/com/winterbe/java8/samples/nashorn/SuperRunner.java diff --git a/src/com/winterbe/java8/samples/stream/Optional1.java b/src/main/java/com/winterbe/java8/samples/stream/Optional1.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Optional1.java rename to src/main/java/com/winterbe/java8/samples/stream/Optional1.java diff --git a/src/com/winterbe/java8/samples/stream/Optional2.java b/src/main/java/com/winterbe/java8/samples/stream/Optional2.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Optional2.java rename to src/main/java/com/winterbe/java8/samples/stream/Optional2.java diff --git a/src/com/winterbe/java8/samples/stream/Streams1.java b/src/main/java/com/winterbe/java8/samples/stream/Streams1.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams1.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams1.java diff --git a/src/com/winterbe/java8/samples/stream/Streams10.java b/src/main/java/com/winterbe/java8/samples/stream/Streams10.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams10.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams10.java diff --git a/src/com/winterbe/java8/samples/stream/Streams11.java b/src/main/java/com/winterbe/java8/samples/stream/Streams11.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams11.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams11.java diff --git a/src/com/winterbe/java8/samples/stream/Streams12.java b/src/main/java/com/winterbe/java8/samples/stream/Streams12.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams12.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams12.java diff --git a/src/com/winterbe/java8/samples/stream/Streams13.java b/src/main/java/com/winterbe/java8/samples/stream/Streams13.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams13.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams13.java diff --git a/src/com/winterbe/java8/samples/stream/Streams2.java b/src/main/java/com/winterbe/java8/samples/stream/Streams2.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams2.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams2.java diff --git a/src/com/winterbe/java8/samples/stream/Streams3.java b/src/main/java/com/winterbe/java8/samples/stream/Streams3.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams3.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams3.java diff --git a/src/com/winterbe/java8/samples/stream/Streams4.java b/src/main/java/com/winterbe/java8/samples/stream/Streams4.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams4.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams4.java diff --git a/src/com/winterbe/java8/samples/stream/Streams5.java b/src/main/java/com/winterbe/java8/samples/stream/Streams5.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams5.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams5.java diff --git a/src/com/winterbe/java8/samples/stream/Streams6.java b/src/main/java/com/winterbe/java8/samples/stream/Streams6.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams6.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams6.java diff --git a/src/com/winterbe/java8/samples/stream/Streams7.java b/src/main/java/com/winterbe/java8/samples/stream/Streams7.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams7.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams7.java diff --git a/src/com/winterbe/java8/samples/stream/Streams8.java b/src/main/java/com/winterbe/java8/samples/stream/Streams8.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams8.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams8.java diff --git a/src/com/winterbe/java8/samples/stream/Streams9.java b/src/main/java/com/winterbe/java8/samples/stream/Streams9.java similarity index 100% rename from src/com/winterbe/java8/samples/stream/Streams9.java rename to src/main/java/com/winterbe/java8/samples/stream/Streams9.java diff --git a/src/com/winterbe/java8/samples/time/LocalDate1.java b/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java similarity index 100% rename from src/com/winterbe/java8/samples/time/LocalDate1.java rename to src/main/java/com/winterbe/java8/samples/time/LocalDate1.java diff --git a/src/com/winterbe/java8/samples/time/LocalDateTime1.java b/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java similarity index 100% rename from src/com/winterbe/java8/samples/time/LocalDateTime1.java rename to src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java diff --git a/src/com/winterbe/java8/samples/time/LocalTime1.java b/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java similarity index 100% rename from src/com/winterbe/java8/samples/time/LocalTime1.java rename to src/main/java/com/winterbe/java8/samples/time/LocalTime1.java From ee0cefda3fc215cb8896bff4bcb92bc6a5502e61 Mon Sep 17 00:00:00 2001 From: pdvlp Date: Fri, 31 Jul 2015 02:33:06 +0800 Subject: [PATCH 02/19] arrays lambda example --- .../java8/samples/lambda/ArraysLambda.java | 59 +++++++++++++++++++ 1 file changed, 59 insertions(+) create mode 100644 src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java diff --git a/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java new file mode 100644 index 00000000..096f6c2b --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java @@ -0,0 +1,59 @@ +package com.winterbe.java8.samples.lambda; + +import java.util.Arrays; +import java.util.Collections; +import java.util.Comparator; +import java.util.List; +import java.util.Optional; + +/** + * @author Benjamin Winterberg + */ +public class ArraysLambda { + + public static void main(String[] args) { + List names = Arrays.asList("peter", "anna", "mike", "xenia"); + + usualSort(names); + lambda1Sort(names); + lambda2Sort(names); + lambda3Sort(names); + System.out.println(names); + + names.sort(Collections.reverseOrder()); + System.out.println(names); + + List names2 = Arrays.asList("peter", null, "anna", "mike", "xenia"); + names2.sort(Comparator.nullsLast(String::compareTo)); + System.out.println(names2); + + + List names3 = null; + Optional.ofNullable(names3).ifPresent(list -> list.sort(Comparator.naturalOrder())); + System.out.println(names3); + } + + private static void lambda3Sort(List names) { + Collections.sort(names, (a, b) -> b.compareTo(a)); + } + + private static void lambda2Sort(List names) { + Collections.sort(names, (String a, String b) -> b.compareTo(a)); + } + + private static void lambda1Sort(List names) { + Collections.sort(names, (String a, String b) -> { + return b.compareTo(a); + }); + } + + private static void usualSort(List names) { + Collections.sort(names, new Comparator() { + @Override + public int compare(String a, String b) { + return b.compareTo(a); + } + }); + } + +} \ No newline at end of file From edb5fbac0f895a18f379b2d89e71aca505ec7326 Mon Sep 17 00:00:00 2001 From: pdvlp Date: Fri, 31 Jul 2015 02:33:25 +0800 Subject: [PATCH 03/19] change name --- .../java8/samples/lambda/Lambda1.java | 49 ------------------- 1 file changed, 49 deletions(-) delete mode 100644 src/main/java/com/winterbe/java8/samples/lambda/Lambda1.java diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Lambda1.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda1.java deleted file mode 100644 index 5bb5b658..00000000 --- a/src/main/java/com/winterbe/java8/samples/lambda/Lambda1.java +++ /dev/null @@ -1,49 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -import java.util.Arrays; -import java.util.Collections; -import java.util.Comparator; -import java.util.List; -import java.util.Optional; - -/** - * @author Benjamin Winterberg - */ -public class Lambda1 { - - public static void main(String[] args) { - List names = Arrays.asList("peter", "anna", "mike", "xenia"); - - Collections.sort(names, new Comparator() { - @Override - public int compare(String a, String b) { - return b.compareTo(a); - } - }); - - Collections.sort(names, (String a, String b) -> { - return b.compareTo(a); - }); - - Collections.sort(names, (String a, String b) -> b.compareTo(a)); - - Collections.sort(names, (a, b) -> b.compareTo(a)); - - System.out.println(names); - - names.sort(Collections.reverseOrder()); - - System.out.println(names); - - List names2 = Arrays.asList("peter", null, "anna", "mike", "xenia"); - names2.sort(Comparator.nullsLast(String::compareTo)); - System.out.println(names2); - - List names3 = null; - - Optional.ofNullable(names3).ifPresent(list -> list.sort(Comparator.naturalOrder())); - - System.out.println(names3); - } - -} \ No newline at end of file From 416e5bf296eb1b45df9cb23bb3f0e8e9696eb98e Mon Sep 17 00:00:00 2001 From: pdvlp Date: Fri, 31 Jul 2015 02:47:49 +0800 Subject: [PATCH 04/19] add tostring --- .../winterbe/java8/samples/lambda/Person.java | 31 +++++++++++++------ 1 file changed, 22 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Person.java b/src/main/java/com/winterbe/java8/samples/lambda/Person.java index 800d39fd..92eb3fc6 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/Person.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/Person.java @@ -1,16 +1,29 @@ package com.winterbe.java8.samples.lambda; /** -* @author Benjamin Winterberg -*/ + * @author Benjamin Winterberg + */ public class Person { - public String firstName; - public String lastName; + public String firstName; + public String lastName; - public Person() {} + public Person() { + } + + public Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } + + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Person [firstName="); + builder.append(firstName); + builder.append(", lastName="); + builder.append(lastName); + builder.append("]"); + return builder.toString(); + } - public Person(String firstName, String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } } \ No newline at end of file From d522c793fdb24b9c290677df42019064a9fed840 Mon Sep 17 00:00:00 2001 From: pdvlp Date: Fri, 31 Jul 2015 02:49:48 +0800 Subject: [PATCH 05/19] change class name. add doc --- .../java8/samples/lambda/Interface1.java | 35 ---------------- .../java8/samples/lambda/InterfaceUsage.java | 42 +++++++++++++++++++ 2 files changed, 42 insertions(+), 35 deletions(-) delete mode 100644 src/main/java/com/winterbe/java8/samples/lambda/Interface1.java create mode 100644 src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Interface1.java b/src/main/java/com/winterbe/java8/samples/lambda/Interface1.java deleted file mode 100644 index 6a87fc10..00000000 --- a/src/main/java/com/winterbe/java8/samples/lambda/Interface1.java +++ /dev/null @@ -1,35 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -/** - * @author Benjamin Winterberg - */ -public class Interface1 { - - interface Formula { - double calculate(int a); - - default double sqrt(int a) { - return Math.sqrt(positive(a)); - } - - static int positive(int a) { - return a > 0 ? a : 0; - } - } - - public static void main(String[] args) { - Formula formula1 = new Formula() { - @Override - public double calculate(int a) { - return sqrt(a * 100); - } - }; - - formula1.calculate(100); // 100.0 - formula1.sqrt(-23); // 0.0 - Formula.positive(-4); // 0.0 - -// Formula formula2 = (a) -> sqrt( a * 100); - } - -} \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java b/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java new file mode 100644 index 00000000..5d584079 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java @@ -0,0 +1,42 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +public class InterfaceUsage { + + public static void main(String[] args) { + Formula formula1 = new Formula() { + @Override + public double calculate(int a) { + return sqrt(a * 100); + } + }; + + double result1 = formula1.calculate(100); // 100.0 + double result2 = formula1.sqrt(-23); // 0.0 + int result3 = Formula.positive(-4); // 0.0 + + // Formula formula2 = (a) -> sqrt(a * 100); + + System.out.println(result1); + System.out.println(result2); + System.out.println(result3); + } +} + +/** + * can define function in a interface class; function can be static. + */ +interface Formula { + + double calculate(int a); + + default double sqrt(int a) { + return Math.sqrt(positive(a)); + } + + static int positive(int a) { + return a > 0 ? a : 0; + } +} \ No newline at end of file From 98232ba82e99906a1670fd954a8c64d3124e3d23 Mon Sep 17 00:00:00 2001 From: pdvlp Date: Fri, 31 Jul 2015 02:51:52 +0800 Subject: [PATCH 06/19] change class name. code clear up --- .../java8/samples/lambda/Lambda2.java | 47 ------------------- .../samples/lambda/LambdaToInterface.java | 44 +++++++++++++++++ 2 files changed, 44 insertions(+), 47 deletions(-) delete mode 100644 src/main/java/com/winterbe/java8/samples/lambda/Lambda2.java create mode 100644 src/main/java/com/winterbe/java8/samples/lambda/LambdaToInterface.java diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Lambda2.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda2.java deleted file mode 100644 index 71e25ec7..00000000 --- a/src/main/java/com/winterbe/java8/samples/lambda/Lambda2.java +++ /dev/null @@ -1,47 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -/** - * @author Benjamin Winterberg - */ -public class Lambda2 { - - @FunctionalInterface - public static interface Converter { - T convert(F from); - } - - static class Something { - String startsWith(String s) { - return String.valueOf(s.charAt(0)); - } - } - - interface PersonFactory

{ - P create(String firstName, String lastName); - } - - public static void main(String[] args) { - Converter integerConverter1 = (from) -> Integer.valueOf(from); - Integer converted1 = integerConverter1.convert("123"); - System.out.println(converted1); // result: 123 - - - // method reference - - Converter integerConverter2 = Integer::valueOf; - Integer converted2 = integerConverter2.convert("123"); - System.out.println(converted2); // result: 123 - - - Something something = new Something(); - - Converter stringConverter = something::startsWith; - String converted3 = stringConverter.convert("Java"); - System.out.println(converted3); // result J - - // constructor reference - - PersonFactory personFactory = Person::new; - Person person = personFactory.create("Peter", "Parker"); - } -} diff --git a/src/main/java/com/winterbe/java8/samples/lambda/LambdaToInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/LambdaToInterface.java new file mode 100644 index 00000000..69687b09 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/LambdaToInterface.java @@ -0,0 +1,44 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +public class LambdaToInterface { + + @FunctionalInterface + public static interface Converter { + T convert(F from); + } + + static class Something { + String startsWith(String s) { + return String.valueOf(s.charAt(0)); + } + } + + interface PersonFactory

{ + P create(String firstName, String lastName); + } + + public static void main(String[] args) { + Converter integerConverter1 = (from) -> Integer.valueOf(from); + Integer converted1 = integerConverter1.convert("123"); + System.out.println(converted1); // result: 123 + + // method reference + Converter integerConverter2 = Integer::valueOf; + Integer converted2 = integerConverter2.convert("123"); + System.out.println(converted2); // result: 123 + + Something something = new Something(); + + Converter stringConverter = something::startsWith; + String converted3 = stringConverter.convert("Java"); + System.out.println(converted3); // result J + + // constructor reference + PersonFactory personFactory = Person::new; + Person person = personFactory.create("Peter", "Parker"); + System.out.println(person); // return Person [firstName=Peter,lastName=Parker] + } +} From 335d5c5be977a264ce43fb9a2bc2d12df52a8769 Mon Sep 17 00:00:00 2001 From: pdvlp Date: Fri, 31 Jul 2015 02:53:27 +0800 Subject: [PATCH 07/19] be affected --- .../java8/samples/lambda/Lambda3.java | 85 +++++++++---------- .../java8/samples/lambda/Lambda4.java | 6 +- 2 files changed, 44 insertions(+), 47 deletions(-) diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java index 967f3493..4fa87e48 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java @@ -16,69 +16,66 @@ */ public class Lambda3 { - @FunctionalInterface - interface Fun { - void foo(); - } + @FunctionalInterface + interface Fun { + void foo(); + } - public static void main(String[] args) throws Exception { + public static void main(String[] args) throws Exception { - // Predicates + // Predicates + Predicate predicate = (s) -> s.length() > 0; - Predicate predicate = (s) -> s.length() > 0; + predicate.test("foo"); // true + predicate.negate().test("foo"); // false - predicate.test("foo"); // true - predicate.negate().test("foo"); // false + Predicate nonNull = Objects::nonNull; + nonNull.test(null); - Predicate nonNull = Objects::nonNull; - Predicate isNull = Objects::isNull; + Predicate isNull = Objects::isNull; + isNull.test(null); - Predicate isEmpty = String::isEmpty; - Predicate isNotEmpty = isEmpty.negate(); + Predicate isEmpty = String::isEmpty; + isEmpty.test(""); + Predicate isNotEmpty = isEmpty.negate(); + isNotEmpty.test(""); + + // Functions + Function toInteger = Integer::valueOf; + Function backToString = toInteger.andThen(String::valueOf); - // Functions + backToString.apply("123"); // "123" - Function toInteger = Integer::valueOf; - Function backToString = toInteger.andThen(String::valueOf); + // Suppliers - backToString.apply("123"); // "123" + Supplier personSupplier = Person::new; + personSupplier.get(); // new Person + // Consumers - // Suppliers + Consumer greeter = (p) -> System.out.println("Hello, " + p.firstName); + greeter.accept(new Person("Luke", "Skywalker")); - Supplier personSupplier = Person::new; - personSupplier.get(); // new Person + // Comparators + Comparator comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); - // Consumers + Person p1 = new Person("John", "Doe"); + Person p2 = new Person("Alice", "Wonderland"); - Consumer greeter = (p) -> System.out.println("Hello, " + p.firstName); - greeter.accept(new Person("Luke", "Skywalker")); + comparator.compare(p1, p2); // > 0 + comparator.reversed().compare(p1, p2); // < 0 + // Runnables + Runnable runnable = () -> System.out.println(UUID.randomUUID()); + runnable.run(); - // Comparators + // Callables - Comparator comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); - - Person p1 = new Person("John", "Doe"); - Person p2 = new Person("Alice", "Wonderland"); - - comparator.compare(p1, p2); // > 0 - comparator.reversed().compare(p1, p2); // < 0 - - - // Runnables - - Runnable runnable = () -> System.out.println(UUID.randomUUID()); - runnable.run(); - - - // Callables - - Callable callable = UUID::randomUUID; - callable.call(); - } + Callable callable = UUID::randomUUID; + callable.call(); + } } diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java index e14b4b29..c1783b7b 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java @@ -12,19 +12,19 @@ public class Lambda4 { void testScopes() { int num = 1; - Lambda2.Converter stringConverter = + LambdaToInterface.Converter stringConverter = (from) -> String.valueOf(from + num); String convert = stringConverter.convert(2); System.out.println(convert); // 3 - Lambda2.Converter stringConverter2 = (from) -> { + LambdaToInterface.Converter stringConverter2 = (from) -> { outerNum = 13; return String.valueOf(from); }; String[] array = new String[1]; - Lambda2.Converter stringConverter3 = (from) -> { + LambdaToInterface.Converter stringConverter3 = (from) -> { array[0] = "Hi there"; return String.valueOf(from); }; From d76bff564303a9a4cbe8beba55db7e3aec0289e7 Mon Sep 17 00:00:00 2001 From: rbible Date: Fri, 31 Jul 2015 14:40:48 +0800 Subject: [PATCH 08/19] add code --- .../java/com/winterbe/java8/samples/lambda/Lambda4.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java index c1783b7b..34f9d3e4 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java @@ -11,18 +11,22 @@ public class Lambda4 { void testScopes() { int num = 1; - LambdaToInterface.Converter stringConverter = (from) -> String.valueOf(from + num); String convert = stringConverter.convert(2); System.out.println(convert); // 3 - LambdaToInterface.Converter stringConverter2 = (from) -> { + + LambdaToInterface.Converter stringConverter2 = (from) -> { outerNum = 13; return String.valueOf(from); }; + stringConverter2.convert(23); + System.out.println(outerNum); + + String[] array = new String[1]; LambdaToInterface.Converter stringConverter3 = (from) -> { array[0] = "Hi there"; From 59b8325b417738430520026f85e3cb3d81f61d52 Mon Sep 17 00:00:00 2001 From: rbible Date: Sat, 1 Aug 2015 22:35:04 +0800 Subject: [PATCH 09/19] change class name --- .../{Lambda3.java => CommonFunctions.java} | 161 +++++++++--------- 1 file changed, 80 insertions(+), 81 deletions(-) rename src/main/java/com/winterbe/java8/samples/lambda/{Lambda3.java => CommonFunctions.java} (94%) diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java similarity index 94% rename from src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java rename to src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java index 4fa87e48..843f33fb 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/Lambda3.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java @@ -1,81 +1,80 @@ -package com.winterbe.java8.samples.lambda; - -import java.util.Comparator; -import java.util.Objects; -import java.util.UUID; -import java.util.concurrent.Callable; -import java.util.function.Consumer; -import java.util.function.Function; -import java.util.function.Predicate; -import java.util.function.Supplier; - -/** - * Common standard functions from the Java API. - * - * @author Benjamin Winterberg - */ -public class Lambda3 { - - @FunctionalInterface - interface Fun { - void foo(); - } - - public static void main(String[] args) throws Exception { - - // Predicates - Predicate predicate = (s) -> s.length() > 0; - - predicate.test("foo"); // true - predicate.negate().test("foo"); // false - - Predicate nonNull = Objects::nonNull; - nonNull.test(null); - - Predicate isNull = Objects::isNull; - isNull.test(null); - - Predicate isEmpty = String::isEmpty; - isEmpty.test(""); - - Predicate isNotEmpty = isEmpty.negate(); - isNotEmpty.test(""); - - // Functions - Function toInteger = Integer::valueOf; - Function backToString = toInteger.andThen(String::valueOf); - - backToString.apply("123"); // "123" - - // Suppliers - - Supplier personSupplier = Person::new; - personSupplier.get(); // new Person - - // Consumers - - Consumer greeter = (p) -> System.out.println("Hello, " + p.firstName); - greeter.accept(new Person("Luke", "Skywalker")); - - // Comparators - - Comparator comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); - - Person p1 = new Person("John", "Doe"); - Person p2 = new Person("Alice", "Wonderland"); - - comparator.compare(p1, p2); // > 0 - comparator.reversed().compare(p1, p2); // < 0 - - // Runnables - - Runnable runnable = () -> System.out.println(UUID.randomUUID()); - runnable.run(); - - // Callables - - Callable callable = UUID::randomUUID; - callable.call(); - } - -} +package com.winterbe.java8.samples.lambda; + +import java.util.Comparator; +import java.util.Objects; +import java.util.UUID; +import java.util.concurrent.Callable; +import java.util.function.Consumer; +import java.util.function.Function; +import java.util.function.Predicate; +import java.util.function.Supplier; + +/** + * Common standard functions from the Java API. + * + * @author Benjamin Winterberg + */ +public class CommonFunctions { + + @FunctionalInterface + interface Fun { + void foo(); + } + + public static void main(String[] args) throws Exception { + + // Predicates + Predicate predicate = (s) -> s.length() > 0; + + predicate.test("foo"); // true + predicate.negate().test("foo"); // false + + Predicate nonNull = Objects::nonNull; + nonNull.test(null); + + Predicate isNull = Objects::isNull; + isNull.test(null); + + Predicate isEmpty = String::isEmpty; + isEmpty.test(""); + + Predicate isNotEmpty = isEmpty.negate(); + isNotEmpty.test(""); + + // Functions + Function toInteger = Integer::valueOf; + Function backToString = toInteger.andThen(String::valueOf); + + backToString.apply("123"); // "123" + + // Suppliers + + Supplier personSupplier = Person::new; + personSupplier.get(); // new Person + + // Consumers + + Consumer greeter = (p) -> System.out.println("Hello, " + p.firstName); + greeter.accept(new Person("Luke", "Skywalker")); + + // Comparators + + Comparator comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); + + Person p1 = new Person("John", "Doe"); + Person p2 = new Person("Alice", "Wonderland"); + + comparator.compare(p1, p2); // > 0 + comparator.reversed().compare(p1, p2); // < 0 + + // Runnables + + Runnable runnable = () -> System.out.println(UUID.randomUUID()); + runnable.run(); + + // Callables + + Callable callable = UUID::randomUUID; + callable.call(); + } +} From 7ddd744a935e11f866df6fead1638a84f0904aaf Mon Sep 17 00:00:00 2001 From: rbible Date: Sat, 1 Aug 2015 22:52:17 +0800 Subject: [PATCH 10/19] functionInterface --- .../lambda/{LambdaToInterface.java => FunctionInterface.java} | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) rename src/main/java/com/winterbe/java8/samples/lambda/{LambdaToInterface.java => FunctionInterface.java} (97%) diff --git a/src/main/java/com/winterbe/java8/samples/lambda/LambdaToInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java similarity index 97% rename from src/main/java/com/winterbe/java8/samples/lambda/LambdaToInterface.java rename to src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java index 69687b09..ce595f94 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/LambdaToInterface.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java @@ -3,7 +3,7 @@ /** * @author Benjamin Winterberg */ -public class LambdaToInterface { +public class FunctionInterface { @FunctionalInterface public static interface Converter { From 0034fff8622ceb5172d9021da03b7734ef869d8f Mon Sep 17 00:00:00 2001 From: rbible Date: Sat, 1 Aug 2015 22:53:26 +0800 Subject: [PATCH 11/19] InnerFunctionInterface --- .../lambda/InnerFunctionInterface.java | 41 +++++++++++++++++ .../java8/samples/lambda/Lambda4.java | 45 ------------------- 2 files changed, 41 insertions(+), 45 deletions(-) create mode 100644 src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java delete mode 100644 src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java diff --git a/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java new file mode 100644 index 00000000..04f025f6 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java @@ -0,0 +1,41 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +public class InnerFunctionInterface { + + static int outerStaticNum; + + int outerNum; + + void testScopes() { + int num = 1; + FunctionInterface.Converter stringConverter = (from) -> String.valueOf(from + num); + + String convert = stringConverter.convert(2); + System.out.println(convert); // 3 + + FunctionInterface.Converter stringConverter2 = (from) -> { + outerNum = 13; + return String.valueOf(from); + }; + + stringConverter2.convert(23); + System.out.println(outerNum);// 13 + + String[] array = new String[1]; + FunctionInterface.Converter stringConverter3 = (from) -> { + array[0] = "Hi there"; + return String.valueOf(from); + }; + + stringConverter3.convert(23); + System.out.println(array[0]);// Hi there + } + + public static void main(String[] args) { + new InnerFunctionInterface().testScopes(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java b/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java deleted file mode 100644 index 34f9d3e4..00000000 --- a/src/main/java/com/winterbe/java8/samples/lambda/Lambda4.java +++ /dev/null @@ -1,45 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -/** - * @author Benjamin Winterberg - */ -public class Lambda4 { - - static int outerStaticNum; - - int outerNum; - - void testScopes() { - int num = 1; - LambdaToInterface.Converter stringConverter = - (from) -> String.valueOf(from + num); - - String convert = stringConverter.convert(2); - System.out.println(convert); // 3 - - - LambdaToInterface.Converter stringConverter2 = (from) -> { - outerNum = 13; - return String.valueOf(from); - }; - - stringConverter2.convert(23); - System.out.println(outerNum); - - - String[] array = new String[1]; - LambdaToInterface.Converter stringConverter3 = (from) -> { - array[0] = "Hi there"; - return String.valueOf(from); - }; - - stringConverter3.convert(23); - - System.out.println(array[0]); - } - - public static void main(String[] args) { - new Lambda4().testScopes(); - } - -} \ No newline at end of file From d8b7b4b702e5621a4914942bd965066ba517e99d Mon Sep 17 00:00:00 2001 From: rbible Date: Fri, 9 Oct 2015 14:29:05 +0800 Subject: [PATCH 12/19] refactor refactor --- res/nashorn1-modified.js | 9 + res/output.js | 1 + .../{Atomic1.java => AtomicIntegerDemo.java} | 38 +-- .../concurrent/CompletableFuture1.java | 8 +- ...hMap1.java => ConcurrentHashMapDemo1.java} | 2 +- .../samples/concurrent/ConcurrentUtils.java | 6 +- .../java8/samples/concurrent/Executors1.java | 11 +- .../java8/samples/concurrent/Executors2.java | 15 +- .../java8/samples/concurrent/Executors3.java | 45 ++-- .../java8/samples/concurrent/Lock1.java | 3 +- .../java8/samples/concurrent/Lock2.java | 2 - .../java8/samples/concurrent/Lock3.java | 4 - .../java8/samples/concurrent/Lock4.java | 1 - .../java8/samples/concurrent/Lock5.java | 1 - .../java8/samples/concurrent/Lock6.java | 3 - .../samples/concurrent/LongAccumulator1.java | 7 +- .../java8/samples/concurrent/LongAdder1.java | 13 +- .../java8/samples/concurrent/Semaphore1.java | 15 +- .../java8/samples/concurrent/Semaphore2.java | 6 +- .../samples/concurrent/Synchronized1.java | 15 +- .../samples/concurrent/Synchronized2.java | 9 +- .../java8/samples/concurrent/Threads1.java | 12 +- .../java8/samples/lambda/ArraysLambda.java | 27 ++- .../java8/samples/lambda/CommonFunctions.java | 82 +++---- .../samples/lambda/FunctionInterface.java | 72 +++--- .../lambda/InnerFunctionInterface.java | 48 ++-- .../java8/samples/lambda/InterfaceUsage.java | 50 ++-- .../winterbe/java8/samples/lambda/Person.java | 36 +-- .../java8/samples/misc/Annotations1.java | 8 +- .../java8/samples/misc/CheckedFunctions.java | 9 +- .../java8/samples/misc/Concurrency1.java | 6 - .../winterbe/java8/samples/misc/Files1.java | 28 +-- .../winterbe/java8/samples/misc/Maps1.java | 20 +- .../winterbe/java8/samples/misc/Math1.java | 12 +- .../winterbe/java8/samples/misc/String1.java | 15 +- .../java8/samples/nashorn/Nashorn10.java | 4 +- .../java8/samples/nashorn/Nashorn11.java | 217 ++++++++++-------- .../java8/samples/nashorn/Nashorn2.java | 36 +-- 38 files changed, 397 insertions(+), 499 deletions(-) create mode 100644 res/nashorn1-modified.js create mode 100644 res/output.js rename src/main/java/com/winterbe/java8/samples/concurrent/{Atomic1.java => AtomicIntegerDemo.java} (65%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ConcurrentHashMap1.java => ConcurrentHashMapDemo1.java} (98%) diff --git a/res/nashorn1-modified.js b/res/nashorn1-modified.js new file mode 100644 index 00000000..eafad136 --- /dev/null +++ b/res/nashorn1-modified.js @@ -0,0 +1,9 @@ +var fun1 = function(name) { + print('Hi there from Javascript, ' + name); + return "greetings from javascript"; +}; + +var fun2 = function (object) { + print("JS Class Definition: " + Object.prototype.toString.call(object)); +}; +print('foobar'); diff --git a/res/output.js b/res/output.js new file mode 100644 index 00000000..e79d7130 --- /dev/null +++ b/res/output.js @@ -0,0 +1 @@ +print('Hello World'); \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Atomic1.java b/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java similarity index 65% rename from src/main/java/com/winterbe/java8/samples/concurrent/Atomic1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java index 0f9d3cba..48919bed 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Atomic1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java @@ -8,7 +8,7 @@ /** * @author Benjamin Winterberg */ -public class Atomic1 { +public class AtomicIntegerDemo { private static final int NUM_INCREMENTS = 1000; @@ -22,49 +22,31 @@ public static void main(String[] args) { private static void testUpdate() { atomicInt.set(0); - ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> { - Runnable task = () -> - atomicInt.updateAndGet(n -> n + 2); - executor.submit(task); - }); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> { + Runnable task = () -> atomicInt.updateAndGet(n -> n + 2); + executor.submit(task); + }); ConcurrentUtils.stop(executor); - System.out.format("Update: %d\n", atomicInt.get()); } private static void testAccumulate() { atomicInt.set(0); - ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> { - Runnable task = () -> - atomicInt.accumulateAndGet(i, (n, m) -> n + m); - executor.submit(task); - }); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> { + Runnable task = () -> atomicInt.accumulateAndGet(i, (n, m) -> n + m); + executor.submit(task); + }); ConcurrentUtils.stop(executor); - System.out.format("Accumulate: %d\n", atomicInt.get()); } private static void testIncrement() { atomicInt.set(0); - ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(atomicInt::incrementAndGet)); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(atomicInt::incrementAndGet)); ConcurrentUtils.stop(executor); - System.out.format("Increment: Expected=%d; Is=%d\n", NUM_INCREMENTS, atomicInt.get()); } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java b/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java index 82be5d75..05b32a65 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java @@ -10,13 +10,7 @@ public class CompletableFuture1 { public static void main(String[] args) throws ExecutionException, InterruptedException { CompletableFuture future = new CompletableFuture<>(); - future.complete("42"); - - future - .thenAccept(System.out::println) - .thenAccept(v -> System.out.println("done")); - + future.thenAccept(System.out::println).thenAccept(v -> System.out.println("done")); } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMapDemo1.java similarity index 98% rename from src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMapDemo1.java index 4acf79ab..8e06d63b 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMap1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMapDemo1.java @@ -6,7 +6,7 @@ /** * @author Benjamin Winterberg */ -public class ConcurrentHashMap1 { +public class ConcurrentHashMapDemo1 { public static void main(String[] args) { System.out.println("Parallelism: " + ForkJoinPool.getCommonPoolParallelism()); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java index 86cfee8d..969e3007 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentUtils.java @@ -12,11 +12,9 @@ public static void stop(ExecutorService executor) { try { executor.shutdown(); executor.awaitTermination(60, TimeUnit.SECONDS); - } - catch (InterruptedException e) { + } catch (InterruptedException e) { System.err.println("termination interrupted"); - } - finally { + } finally { if (!executor.isTerminated()) { System.err.println("killing non-finished tasks"); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java index 9762938d..40f63a02 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java @@ -11,7 +11,7 @@ public class Executors1 { public static void main(String[] args) { test1(3); -// test1(7); + // test1(7); } private static void test1(long seconds) { @@ -21,8 +21,7 @@ private static void test1(long seconds) { TimeUnit.SECONDS.sleep(seconds); String name = Thread.currentThread().getName(); System.out.println("task finished: " + name); - } - catch (InterruptedException e) { + } catch (InterruptedException e) { System.err.println("task interrupted"); } }); @@ -34,11 +33,9 @@ static void stop(ExecutorService executor) { System.out.println("attempt to shutdown executor"); executor.shutdown(); executor.awaitTermination(5, TimeUnit.SECONDS); - } - catch (InterruptedException e) { + } catch (InterruptedException e) { System.err.println("termination interrupted"); - } - finally { + } finally { if (!executor.isTerminated()) { System.err.println("killing non-finished tasks"); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java index 33dda88e..9d7ad04f 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java @@ -13,8 +13,8 @@ public class Executors2 { public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException { -// test1(); -// test2(); + // test1(); + // test2(); test3(); } @@ -25,8 +25,7 @@ private static void test3() throws InterruptedException, ExecutionException, Tim try { TimeUnit.SECONDS.sleep(2); return 123; - } - catch (InterruptedException e) { + } catch (InterruptedException e) { throw new IllegalStateException("task interrupted", e); } }); @@ -34,6 +33,7 @@ private static void test3() throws InterruptedException, ExecutionException, Tim future.get(1, TimeUnit.SECONDS); } + @SuppressWarnings("unused") private static void test2() throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newFixedThreadPool(1); @@ -41,8 +41,7 @@ private static void test2() throws InterruptedException, ExecutionException { try { TimeUnit.SECONDS.sleep(1); return 123; - } - catch (InterruptedException e) { + } catch (InterruptedException e) { throw new IllegalStateException("task interrupted", e); } }); @@ -51,6 +50,7 @@ private static void test2() throws InterruptedException, ExecutionException { future.get(); } + @SuppressWarnings("unused") private static void test1() throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newFixedThreadPool(1); @@ -58,8 +58,7 @@ private static void test1() throws InterruptedException, ExecutionException { try { TimeUnit.SECONDS.sleep(1); return 123; - } - catch (InterruptedException e) { + } catch (InterruptedException e) { throw new IllegalStateException("task interrupted", e); } }); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java b/src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java index 75e60377..e468a561 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java @@ -17,20 +17,18 @@ public class Executors3 { public static void main(String[] args) throws InterruptedException, ExecutionException { test1(); -// test2(); -// test3(); + // test2(); + // test3(); -// test4(); -// test5(); + // test4(); + // test5(); } + @SuppressWarnings("unused") private static void test5() throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newWorkStealingPool(); - List> callables = Arrays.asList( - callable("task1", 2), - callable("task2", 1), - callable("task3", 3)); + List> callables = Arrays.asList(callable("task1", 2), callable("task2", 1), callable("task3", 3)); String result = executor.invokeAny(callables); System.out.println(result); @@ -45,29 +43,24 @@ private static Callable callable(String result, long sleepSeconds) { }; } + @SuppressWarnings("unused") private static void test4() throws InterruptedException { ExecutorService executor = Executors.newWorkStealingPool(); - List> callables = Arrays.asList( - () -> "task1", - () -> "task2", - () -> "task3"); - - executor.invokeAll(callables) - .stream() - .map(future -> { - try { - return future.get(); - } - catch (Exception e) { - throw new IllegalStateException(e); - } - }) - .forEach(System.out::println); + List> callables = Arrays.asList(() -> "task1", () -> "task2", () -> "task3"); + + executor.invokeAll(callables).stream().map(future -> { + try { + return future.get(); + } catch (Exception e) { + throw new IllegalStateException(e); + } + }).forEach(System.out::println); executor.shutdown(); } + @SuppressWarnings("unused") private static void test3() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); @@ -75,8 +68,7 @@ private static void test3() { try { TimeUnit.SECONDS.sleep(2); System.out.println("Scheduling: " + System.nanoTime()); - } - catch (InterruptedException e) { + } catch (InterruptedException e) { System.err.println("task interrupted"); } }; @@ -84,6 +76,7 @@ private static void test3() { executor.scheduleWithFixedDelay(task, 0, 1, TimeUnit.SECONDS); } + @SuppressWarnings("unused") private static void test2() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> System.out.println("Scheduling: " + System.nanoTime()); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java index d96eba3a..96f92d3b 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java @@ -34,8 +34,7 @@ private static void testLock() { ExecutorService executor = Executors.newFixedThreadPool(2); - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(Lock1::increment)); + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Lock1::increment)); ConcurrentUtils.stop(executor); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java index 12757908..a172655b 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java @@ -11,7 +11,6 @@ public class Lock2 { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); - ReentrantLock lock = new ReentrantLock(); executor.submit(() -> { @@ -32,5 +31,4 @@ public static void main(String[] args) { ConcurrentUtils.stop(executor); } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java index 5e24a49b..1cd481a1 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java @@ -14,11 +14,8 @@ public class Lock3 { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); - Map map = new HashMap<>(); - ReadWriteLock lock = new ReentrantReadWriteLock(); - executor.submit(() -> { lock.writeLock().lock(); try { @@ -43,5 +40,4 @@ public static void main(String[] args) { ConcurrentUtils.stop(executor); } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java index 4061a694..c4e0708e 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java @@ -42,5 +42,4 @@ public static void main(String[] args) { ConcurrentUtils.stop(executor); } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java index 79802230..3c804ddd 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java @@ -11,7 +11,6 @@ public class Lock5 { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); - StampedLock lock = new StampedLock(); executor.submit(() -> { diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java b/src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java index a518b568..611ee89b 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java @@ -13,9 +13,7 @@ public class Lock6 { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); - StampedLock lock = new StampedLock(); - executor.submit(() -> { long stamp = lock.readLock(); try { @@ -35,5 +33,4 @@ public static void main(String[] args) { ConcurrentUtils.stop(executor); } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java b/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java index fa000a1b..a3b40433 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java @@ -18,14 +18,9 @@ public static void main(String[] args) { private static void testAccumulate() { LongBinaryOperator op = (x, y) -> 2 * x + y; LongAccumulator accumulator = new LongAccumulator(op, 1L); - ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, 10) - .forEach(i -> executor.submit(() -> accumulator.accumulate(i))); - + IntStream.range(0, 10).forEach(i -> executor.submit(() -> accumulator.accumulate(i))); ConcurrentUtils.stop(executor); - System.out.format("Add: %d\n", accumulator.getThenReset()); } } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java b/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java index 98cb1843..413b0f0e 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java @@ -11,7 +11,6 @@ public class LongAdder1 { private static final int NUM_INCREMENTS = 10000; - private static LongAdder adder = new LongAdder(); public static void main(String[] args) { @@ -21,23 +20,15 @@ public static void main(String[] args) { private static void testAdd() { ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(() -> adder.add(2))); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(() -> adder.add(2))); ConcurrentUtils.stop(executor); - System.out.format("Add: %d\n", adder.sumThenReset()); } private static void testIncrement() { ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(adder::increment)); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(adder::increment)); ConcurrentUtils.stop(executor); - System.out.format("Increment: Expected=%d; Is=%d\n", NUM_INCREMENTS, adder.sumThenReset()); } } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java index 17f4c51a..062647a2 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java @@ -12,9 +12,7 @@ public class Semaphore1 { private static final int NUM_INCREMENTS = 10000; - private static Semaphore semaphore = new Semaphore(1); - private static int count = 0; public static void main(String[] args) { @@ -23,12 +21,8 @@ public static void main(String[] args) { private static void testIncrement() { ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(Semaphore1::increment)); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Semaphore1::increment)); ConcurrentUtils.stop(executor); - System.out.println("Increment: " + count); } @@ -37,15 +31,12 @@ private static void increment() { try { permit = semaphore.tryAcquire(5, TimeUnit.SECONDS); count++; - } - catch (InterruptedException e) { + } catch (InterruptedException e) { throw new RuntimeException("could not increment"); - } - finally { + } finally { if (permit) { semaphore.release(); } } } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java index 23380594..7f146aee 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java @@ -15,10 +15,7 @@ public class Semaphore2 { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(10); - - IntStream.range(0, 10) - .forEach(i -> executor.submit(Semaphore2::doWork)); - + IntStream.range(0, 10).forEach(i -> executor.submit(Semaphore2::doWork)); ConcurrentUtils.stop(executor); } @@ -40,5 +37,4 @@ private static void doWork() { } } } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java index c2a4e612..4211567c 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java @@ -20,27 +20,17 @@ public static void main(String[] args) { private static void testSyncIncrement() { count = 0; - ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(Synchronized1::incrementSync)); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Synchronized1::incrementSync)); ConcurrentUtils.stop(executor); - System.out.println(" Sync: " + count); } private static void testNonSyncIncrement() { count = 0; - ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(Synchronized1::increment)); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Synchronized1::increment)); ConcurrentUtils.stop(executor); - System.out.println("NonSync: " + count); } @@ -51,5 +41,4 @@ private static synchronized void incrementSync() { private static void increment() { count = count + 1; } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java b/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java index 98b1879c..52737d6e 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java @@ -10,7 +10,6 @@ public class Synchronized2 { private static final int NUM_INCREMENTS = 10000; - private static int count = 0; public static void main(String[] args) { @@ -19,14 +18,9 @@ public static void main(String[] args) { private static void testSyncIncrement() { count = 0; - ExecutorService executor = Executors.newFixedThreadPool(2); - - IntStream.range(0, NUM_INCREMENTS) - .forEach(i -> executor.submit(Synchronized2::incrementSync)); - + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Synchronized2::incrementSync)); ConcurrentUtils.stop(executor); - System.out.println(count); } @@ -35,5 +29,4 @@ private static void incrementSync() { count = count + 1; } } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java index 8a64f688..f3bfba2f 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java @@ -9,18 +9,18 @@ public class Threads1 { public static void main(String[] args) { test1(); -// test2(); -// test3(); + // test2(); + // test3(); } + @SuppressWarnings("unused") private static void test3() { Runnable runnable = () -> { try { System.out.println("Foo " + Thread.currentThread().getName()); TimeUnit.SECONDS.sleep(1); System.out.println("Bar " + Thread.currentThread().getName()); - } - catch (InterruptedException e) { + } catch (InterruptedException e) { e.printStackTrace(); } }; @@ -29,14 +29,14 @@ private static void test3() { thread.start(); } + @SuppressWarnings("unused") private static void test2() { Runnable runnable = () -> { try { System.out.println("Foo " + Thread.currentThread().getName()); Thread.sleep(1000); System.out.println("Bar " + Thread.currentThread().getName()); - } - catch (InterruptedException e) { + } catch (InterruptedException e) { e.printStackTrace(); } }; diff --git a/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java index 096f6c2b..d94799a6 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java @@ -16,7 +16,7 @@ public static void main(String[] args) { usualSort(names); lambda1Sort(names); - lambda2Sort(names); + lambda2Sort(names); lambda3Sort(names); System.out.println(names); @@ -27,33 +27,32 @@ public static void main(String[] args) { names2.sort(Comparator.nullsLast(String::compareTo)); System.out.println(names2); - List names3 = null; Optional.ofNullable(names3).ifPresent(list -> list.sort(Comparator.naturalOrder())); System.out.println(names3); } - private static void lambda3Sort(List names) { - Collections.sort(names, (a, b) -> b.compareTo(a)); - } + private static void lambda3Sort(List names) { + Collections.sort(names, (a, b) -> b.compareTo(a)); + } - private static void lambda2Sort(List names) { - Collections.sort(names, (String a, String b) -> b.compareTo(a)); - } + private static void lambda2Sort(List names) { + Collections.sort(names, (String a, String b) -> b.compareTo(a)); + } - private static void lambda1Sort(List names) { - Collections.sort(names, (String a, String b) -> { + private static void lambda1Sort(List names) { + Collections.sort(names, (String a, String b) -> { return b.compareTo(a); }); - } + } - private static void usualSort(List names) { - Collections.sort(names, new Comparator() { + private static void usualSort(List names) { + Collections.sort(names, new Comparator() { @Override public int compare(String a, String b) { return b.compareTo(a); } }); - } + } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java index 843f33fb..c69bf23e 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java @@ -16,65 +16,65 @@ */ public class CommonFunctions { - @FunctionalInterface - interface Fun { - void foo(); - } + @FunctionalInterface + interface Fun { + void foo(); + } - public static void main(String[] args) throws Exception { + public static void main(String[] args) throws Exception { - // Predicates - Predicate predicate = (s) -> s.length() > 0; + // Predicates + Predicate predicate = (s) -> s.length() > 0; - predicate.test("foo"); // true - predicate.negate().test("foo"); // false + predicate.test("foo"); // true + predicate.negate().test("foo"); // false - Predicate nonNull = Objects::nonNull; - nonNull.test(null); + Predicate nonNull = Objects::nonNull; + nonNull.test(null); - Predicate isNull = Objects::isNull; - isNull.test(null); + Predicate isNull = Objects::isNull; + isNull.test(null); - Predicate isEmpty = String::isEmpty; - isEmpty.test(""); + Predicate isEmpty = String::isEmpty; + isEmpty.test(""); - Predicate isNotEmpty = isEmpty.negate(); - isNotEmpty.test(""); + Predicate isNotEmpty = isEmpty.negate(); + isNotEmpty.test(""); - // Functions - Function toInteger = Integer::valueOf; - Function backToString = toInteger.andThen(String::valueOf); + // Functions + Function toInteger = Integer::valueOf; + Function backToString = toInteger.andThen(String::valueOf); - backToString.apply("123"); // "123" + backToString.apply("123"); // "123" - // Suppliers + // Suppliers - Supplier personSupplier = Person::new; - personSupplier.get(); // new Person + Supplier personSupplier = Person::new; + personSupplier.get(); // new Person - // Consumers + // Consumers - Consumer greeter = (p) -> System.out.println("Hello, " + p.firstName); - greeter.accept(new Person("Luke", "Skywalker")); - - // Comparators + Consumer greeter = (p) -> System.out.println("Hello, " + p.firstName); + greeter.accept(new Person("Luke", "Skywalker")); - Comparator comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); + // Comparators - Person p1 = new Person("John", "Doe"); - Person p2 = new Person("Alice", "Wonderland"); + Comparator comparator = (p1, p2) -> p1.firstName.compareTo(p2.firstName); - comparator.compare(p1, p2); // > 0 - comparator.reversed().compare(p1, p2); // < 0 + Person p1 = new Person("John", "Doe"); + Person p2 = new Person("Alice", "Wonderland"); - // Runnables + comparator.compare(p1, p2); // > 0 + comparator.reversed().compare(p1, p2); // < 0 - Runnable runnable = () -> System.out.println(UUID.randomUUID()); - runnable.run(); + // Runnables - // Callables + Runnable runnable = () -> System.out.println(UUID.randomUUID()); + runnable.run(); - Callable callable = UUID::randomUUID; - callable.call(); - } + // Callables + + Callable callable = UUID::randomUUID; + callable.call(); + } } diff --git a/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java index ce595f94..265dafe5 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java @@ -5,40 +5,40 @@ */ public class FunctionInterface { - @FunctionalInterface - public static interface Converter { - T convert(F from); - } - - static class Something { - String startsWith(String s) { - return String.valueOf(s.charAt(0)); - } - } - - interface PersonFactory

{ - P create(String firstName, String lastName); - } - - public static void main(String[] args) { - Converter integerConverter1 = (from) -> Integer.valueOf(from); - Integer converted1 = integerConverter1.convert("123"); - System.out.println(converted1); // result: 123 - - // method reference - Converter integerConverter2 = Integer::valueOf; - Integer converted2 = integerConverter2.convert("123"); - System.out.println(converted2); // result: 123 - - Something something = new Something(); - - Converter stringConverter = something::startsWith; - String converted3 = stringConverter.convert("Java"); - System.out.println(converted3); // result J - - // constructor reference - PersonFactory personFactory = Person::new; - Person person = personFactory.create("Peter", "Parker"); - System.out.println(person); // return Person [firstName=Peter,lastName=Parker] - } + @FunctionalInterface + public static interface Converter { + T convert(F from); + } + + static class Something { + String startsWith(String s) { + return String.valueOf(s.charAt(0)); + } + } + + interface PersonFactory

{ + P create(String firstName, String lastName); + } + + public static void main(String[] args) { + Converter integerConverter1 = (from) -> Integer.valueOf(from); + Integer converted1 = integerConverter1.convert("123"); + System.out.println(converted1); // result: 123 + + // method reference + Converter integerConverter2 = Integer::valueOf; + Integer converted2 = integerConverter2.convert("123"); + System.out.println(converted2); // result: 123 + + Something something = new Something(); + + Converter stringConverter = something::startsWith; + String converted3 = stringConverter.convert("Java"); + System.out.println(converted3); // result J + + // constructor reference + PersonFactory personFactory = Person::new; + Person person = personFactory.create("Peter", "Parker"); + System.out.println(person); // return Person [firstName=Peter,lastName=Parker] + } } diff --git a/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java index 04f025f6..7c42a961 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java @@ -5,37 +5,37 @@ */ public class InnerFunctionInterface { - static int outerStaticNum; + static int outerStaticNum; - int outerNum; + int outerNum; - void testScopes() { - int num = 1; - FunctionInterface.Converter stringConverter = (from) -> String.valueOf(from + num); + void testScopes() { + int num = 1; + FunctionInterface.Converter stringConverter = (from) -> String.valueOf(from + num); - String convert = stringConverter.convert(2); - System.out.println(convert); // 3 + String convert = stringConverter.convert(2); + System.out.println(convert); // 3 - FunctionInterface.Converter stringConverter2 = (from) -> { - outerNum = 13; - return String.valueOf(from); - }; + FunctionInterface.Converter stringConverter2 = (from) -> { + outerNum = 13; + return String.valueOf(from); + }; - stringConverter2.convert(23); - System.out.println(outerNum);// 13 + stringConverter2.convert(23); + System.out.println(outerNum);// 13 - String[] array = new String[1]; - FunctionInterface.Converter stringConverter3 = (from) -> { - array[0] = "Hi there"; - return String.valueOf(from); - }; + String[] array = new String[1]; + FunctionInterface.Converter stringConverter3 = (from) -> { + array[0] = "Hi there"; + return String.valueOf(from); + }; - stringConverter3.convert(23); - System.out.println(array[0]);// Hi there - } + stringConverter3.convert(23); + System.out.println(array[0]);// Hi there + } - public static void main(String[] args) { - new InnerFunctionInterface().testScopes(); - } + public static void main(String[] args) { + new InnerFunctionInterface().testScopes(); + } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java b/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java index 5d584079..27404d6a 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java @@ -5,24 +5,24 @@ */ public class InterfaceUsage { - public static void main(String[] args) { - Formula formula1 = new Formula() { - @Override - public double calculate(int a) { - return sqrt(a * 100); - } - }; - - double result1 = formula1.calculate(100); // 100.0 - double result2 = formula1.sqrt(-23); // 0.0 - int result3 = Formula.positive(-4); // 0.0 - - // Formula formula2 = (a) -> sqrt(a * 100); - - System.out.println(result1); - System.out.println(result2); - System.out.println(result3); - } + public static void main(String[] args) { + Formula formula1 = new Formula() { + @Override + public double calculate(int a) { + return sqrt(a * 100); + } + }; + + double result1 = formula1.calculate(100); // 100.0 + double result2 = formula1.sqrt(-23); // 0.0 + int result3 = Formula.positive(-4); // 0.0 + + // Formula formula2 = (a) -> sqrt(a * 100); + + System.out.println(result1); + System.out.println(result2); + System.out.println(result3); + } } /** @@ -30,13 +30,13 @@ public double calculate(int a) { */ interface Formula { - double calculate(int a); + double calculate(int a); - default double sqrt(int a) { - return Math.sqrt(positive(a)); - } + default double sqrt(int a) { + return Math.sqrt(positive(a)); + } - static int positive(int a) { - return a > 0 ? a : 0; - } + static int positive(int a) { + return a > 0 ? a : 0; + } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Person.java b/src/main/java/com/winterbe/java8/samples/lambda/Person.java index 92eb3fc6..f5108eb2 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/Person.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/Person.java @@ -4,26 +4,26 @@ * @author Benjamin Winterberg */ public class Person { - public String firstName; - public String lastName; + public String firstName; + public String lastName; - public Person() { - } + public Person() { + } - public Person(String firstName, String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } + public Person(String firstName, String lastName) { + this.firstName = firstName; + this.lastName = lastName; + } - @Override - public String toString() { - StringBuilder builder = new StringBuilder(); - builder.append("Person [firstName="); - builder.append(firstName); - builder.append(", lastName="); - builder.append(lastName); - builder.append("]"); - return builder.toString(); - } + @Override + public String toString() { + StringBuilder builder = new StringBuilder(); + builder.append("Person [firstName="); + builder.append(firstName); + builder.append(", lastName="); + builder.append(lastName); + builder.append("]"); + return builder.toString(); + } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/misc/Annotations1.java b/src/main/java/com/winterbe/java8/samples/misc/Annotations1.java index ef54072d..4d379d4b 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/Annotations1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/Annotations1.java @@ -11,7 +11,7 @@ */ public class Annotations1 { - @Target({ElementType.TYPE_PARAMETER, ElementType.TYPE_USE}) + @Target({ ElementType.TYPE_PARAMETER, ElementType.TYPE_USE }) @interface MyAnnotation { } @@ -35,13 +35,13 @@ class Person { public static void main(String[] args) { Hint hint = Person.class.getAnnotation(Hint.class); - System.out.println(hint); // null + System.out.println(hint); // null Hints hints1 = Person.class.getAnnotation(Hints.class); - System.out.println(hints1.value().length); // 2 + System.out.println(hints1.value().length); // 2 Hint[] hints2 = Person.class.getAnnotationsByType(Hint.class); - System.out.println(hints2.length); // 2 + System.out.println(hints2.length); // 2 } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/misc/CheckedFunctions.java b/src/main/java/com/winterbe/java8/samples/misc/CheckedFunctions.java index df8168a4..f566439e 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/CheckedFunctions.java +++ b/src/main/java/com/winterbe/java8/samples/misc/CheckedFunctions.java @@ -38,8 +38,7 @@ public static Function function(CheckedFunction function) { return input -> { try { return function.apply(input); - } - catch (Exception e) { + } catch (Exception e) { if (e instanceof RuntimeException) { throw (RuntimeException) e; } @@ -59,8 +58,7 @@ public static Predicate predicate(CheckedPredicate predicate) { return input -> { try { return predicate.test(input); - } - catch (Exception e) { + } catch (Exception e) { if (e instanceof RuntimeException) { throw (RuntimeException) e; } @@ -80,8 +78,7 @@ public static Consumer consumer(CheckedConsumer consumer) { return input -> { try { consumer.accept(input); - } - catch (Exception e) { + } catch (Exception e) { if (e instanceof RuntimeException) { throw (RuntimeException) e; } diff --git a/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java b/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java index e7874e63..b107d5e7 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java @@ -10,28 +10,22 @@ public class Concurrency1 { public static void main(String[] args) { ConcurrentHashMap concurrentHashMap = new ConcurrentHashMap<>(); - for (int i = 0; i < 100; i++) { concurrentHashMap.put(i, UUID.randomUUID()); } - int threshold = 1; - concurrentHashMap.forEachValue(threshold, System.out::println); - concurrentHashMap.forEach((id, uuid) -> { if (id % 10 == 0) { System.out.println(String.format("%s: %s", id, uuid)); } }); - UUID searchResult = concurrentHashMap.search(threshold, (id, uuid) -> { if (String.valueOf(uuid).startsWith(String.valueOf(id))) { return uuid; } return null; }); - System.out.println(searchResult); } } diff --git a/src/main/java/com/winterbe/java8/samples/misc/Files1.java b/src/main/java/com/winterbe/java8/samples/misc/Files1.java index ece9dbea..add96d81 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/Files1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/Files1.java @@ -29,10 +29,7 @@ public static void main(String[] args) throws IOException { private static void testReaderLines() throws IOException { Path path = Paths.get("res/nashorn1.js"); try (BufferedReader reader = Files.newBufferedReader(path)) { - long countPrints = reader - .lines() - .filter(line -> line.contains("print")) - .count(); + long countPrints = reader.lines().filter(line -> line.contains("print")).count(); System.out.println(countPrints); } } @@ -55,9 +52,7 @@ private static void testWalk() throws IOException { Path start = Paths.get(""); int maxDepth = 5; try (Stream stream = Files.walk(start, maxDepth)) { - String joined = stream - .map(String::valueOf) - .filter(path -> path.endsWith(".js")) + String joined = stream.map(String::valueOf).filter(path -> path.endsWith(".js")) .collect(Collectors.joining("; ")); System.out.println("walk(): " + joined); } @@ -66,22 +61,15 @@ private static void testWalk() throws IOException { private static void testFind() throws IOException { Path start = Paths.get(""); int maxDepth = 5; - try (Stream stream = Files.find(start, maxDepth, (path, attr) -> - String.valueOf(path).endsWith(".js"))) { - String joined = stream - .sorted() - .map(String::valueOf) - .collect(Collectors.joining("; ")); + try (Stream stream = Files.find(start, maxDepth, (path, attr) -> String.valueOf(path).endsWith(".js"))) { + String joined = stream.sorted().map(String::valueOf).collect(Collectors.joining("; ")); System.out.println("find(): " + joined); } } private static void testList() throws IOException { try (Stream stream = Files.list(Paths.get(""))) { - String joined = stream - .map(String::valueOf) - .filter(path -> !path.startsWith(".")) - .sorted() + String joined = stream.map(String::valueOf).filter(path -> !path.startsWith(".")).sorted() .collect(Collectors.joining("; ")); System.out.println("list(): " + joined); } @@ -89,10 +77,7 @@ private static void testList() throws IOException { private static void testLines() throws IOException { try (Stream stream = Files.lines(Paths.get("res/nashorn1.js"))) { - stream - .filter(line -> line.contains("print")) - .map(String::trim) - .forEach(System.out::println); + stream.filter(line -> line.contains("print")).map(String::trim).forEach(System.out::println); } } @@ -101,4 +86,5 @@ private static void testReadWriteLines() throws IOException { lines.add("print('foobar');"); Files.write(Paths.get("res", "nashorn1-modified.js"), lines); } + } diff --git a/src/main/java/com/winterbe/java8/samples/misc/Maps1.java b/src/main/java/com/winterbe/java8/samples/misc/Maps1.java index 1bc7b0dc..b5d6b486 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/Maps1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/Maps1.java @@ -17,32 +17,32 @@ public static void main(String[] args) { map.forEach((id, val) -> System.out.println(val)); - map.computeIfPresent(3, (num, val) -> val + num); - System.out.println(map.get(3)); // val33 + System.out.println(map.get(3)); // val33 + System.out.println(map.get(4));// val4 map.computeIfPresent(9, (num, val) -> null); - System.out.println(map.containsKey(9)); // false + System.out.println(map.containsKey(9)); // false map.computeIfAbsent(23, num -> "val" + num); - System.out.println(map.containsKey(23)); // true + System.out.println(map.containsKey(23)); // true map.computeIfAbsent(3, num -> "bam"); - System.out.println(map.get(3)); // val33 + System.out.println(map.get(3)); // val33 - System.out.println(map.getOrDefault(42, "not found")); // not found + System.out.println(map.getOrDefault(42, "not found")); // not found map.remove(3, "val3"); - System.out.println(map.get(3)); // val33 + System.out.println(map.get(3)); // val33 map.remove(3, "val33"); - System.out.println(map.get(3)); // null + System.out.println(map.get(3)); // null map.merge(9, "val9", (value, newValue) -> value.concat(newValue)); - System.out.println(map.get(9)); // val9 + System.out.println(map.get(9)); // val9 map.merge(9, "concat", (value, newValue) -> value.concat(newValue)); - System.out.println(map.get(9)); // val9concat + System.out.println(map.get(9)); // val9concat } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/misc/Math1.java b/src/main/java/com/winterbe/java8/samples/misc/Math1.java index 2cebea8d..306521ca 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/Math1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/Math1.java @@ -13,8 +13,7 @@ public static void main(String[] args) { private static void testUnsignedInt() { try { Integer.parseUnsignedInt("-123", 10); - } - catch (NumberFormatException e) { + } catch (NumberFormatException e) { System.out.println(e.getMessage()); } @@ -31,8 +30,7 @@ private static void testUnsignedInt() { try { Integer.parseInt(string, 10); - } - catch (NumberFormatException e) { + } catch (NumberFormatException e) { System.err.println("could not parse signed int of " + maxUnsignedInt); } } @@ -43,15 +41,13 @@ private static void testMathExact() { try { Math.addExact(Integer.MAX_VALUE, 1); - } - catch (ArithmeticException e) { + } catch (ArithmeticException e) { System.err.println(e.getMessage()); } try { Math.toIntExact(Long.MAX_VALUE); - } - catch (ArithmeticException e) { + } catch (ArithmeticException e) { System.err.println(e.getMessage()); } } diff --git a/src/main/java/com/winterbe/java8/samples/misc/String1.java b/src/main/java/com/winterbe/java8/samples/misc/String1.java index 0ba6ad8d..b52c9ab6 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/String1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/String1.java @@ -17,28 +17,19 @@ public static void main(String[] args) { } private static void testChars() { - String string = "foobar:foo:bar" - .chars() - .distinct() - .mapToObj(c -> String.valueOf((char) c)) - .sorted() + String string = "foobar:foo:bar".chars().distinct().mapToObj(c -> String.valueOf((char) c)).sorted() .collect(Collectors.joining()); System.out.println(string); } private static void testPatternSplit() { - String string = Pattern.compile(":") - .splitAsStream("foobar:foo:bar") - .filter(s -> s.contains("bar")) - .sorted() + String string = Pattern.compile(":").splitAsStream("foobar:foo:bar").filter(s -> s.contains("bar")).sorted() .collect(Collectors.joining(":")); System.out.println(string); } private static void testPatternPredicate() { - long count = Stream.of("bob@gmail.com", "alice@hotmail.com") - .filter(Pattern.compile(".*@gmail\\.com").asPredicate()) - .count(); + long count = Stream.of("bob@gmail.com", "alice@hotmail.com").filter(Pattern.compile(".*@gmail\\.com").asPredicate()).count(); System.out.println(count); } diff --git a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java index ed4a6d17..0e0eb18e 100644 --- a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java +++ b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java @@ -4,6 +4,7 @@ import javax.script.ScriptEngineManager; import javax.script.ScriptException; + import java.util.concurrent.TimeUnit; /** @@ -11,7 +12,8 @@ */ public class Nashorn10 { - public static void main(String[] args) throws ScriptException, NoSuchMethodException { + @SuppressWarnings("restriction") + public static void main(String[] args) throws ScriptException, NoSuchMethodException { NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); engine.eval("load('res/nashorn10.js')"); diff --git a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn11.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn11.java index 355e92eb..f2ee994e 100644 --- a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn11.java +++ b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn11.java @@ -12,146 +12,161 @@ /** * @author Benjamin Winterberg */ +@SuppressWarnings("restriction") public class Nashorn11 { - public static void main(String[] args) throws Exception { -// test1(); -// test2(); -// test3(); -// test4(); -// test5(); -// test6(); -// test7(); - test8(); - } + public static void main(String[] args) throws Exception { + System.out.println("test1:"); + test1(); + System.out.println("test3:"); + test3(); + System.out.println("test4:"); + test4(); + System.out.println("test5:"); + test5(); + System.out.println("test6:"); + test6(); + System.out.println("test7:"); + test7(); + System.out.println("test8:"); + test8(); + System.out.println("test2:"); + test2(); + } - private static void test8() throws ScriptException { - NashornScriptEngine engine = createEngine(); + private static void test8() throws ScriptException { + NashornScriptEngine engine = createEngine(); + engine.eval("var obj = { foo: 23 };"); - engine.eval("var obj = { foo: 23 };"); + ScriptContext defaultContext = engine.getContext(); + Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); - ScriptContext defaultContext = engine.getContext(); - Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context1 = new SimpleScriptContext(); + context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); - SimpleScriptContext context1 = new SimpleScriptContext(); - context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context2 = new SimpleScriptContext(); + context2.getBindings(ScriptContext.ENGINE_SCOPE).put("obj", defaultBindings.get("obj")); - SimpleScriptContext context2 = new SimpleScriptContext(); - context2.getBindings(ScriptContext.ENGINE_SCOPE).put("obj", defaultBindings.get("obj")); + engine.eval("obj.foo = 44;", context1); + engine.eval("print(obj.foo);", context1); + engine.eval("print(obj.foo);", context2); + } - engine.eval("obj.foo = 44;", context1); - engine.eval("print(obj.foo);", context1); - engine.eval("print(obj.foo);", context2); - } + private static void test7() throws ScriptException { + NashornScriptEngine engine = createEngine(); - private static void test7() throws ScriptException { - NashornScriptEngine engine = createEngine(); + engine.eval("var foo = 23;"); - engine.eval("var foo = 23;"); + ScriptContext defaultContext = engine.getContext(); + Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); - ScriptContext defaultContext = engine.getContext(); - Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context1 = new SimpleScriptContext(); + context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); - SimpleScriptContext context1 = new SimpleScriptContext(); - context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context2 = new SimpleScriptContext(); + context2.getBindings(ScriptContext.ENGINE_SCOPE).put("foo", defaultBindings.get("foo")); - SimpleScriptContext context2 = new SimpleScriptContext(); - context2.getBindings(ScriptContext.ENGINE_SCOPE).put("foo", defaultBindings.get("foo")); + engine.eval("foo = 44;", context1); + engine.eval("print(foo);", context1); + engine.eval("print(foo);", context2); + } - engine.eval("foo = 44;", context1); - engine.eval("print(foo);", context1); - engine.eval("print(foo);", context2); - } + private static void test6() throws ScriptException { + NashornScriptEngine engine = createEngine(); - private static void test6() throws ScriptException { - NashornScriptEngine engine = createEngine(); + ScriptContext defaultContext = engine.getContext(); + defaultContext.getBindings(ScriptContext.GLOBAL_SCOPE).put("foo", "hello"); - ScriptContext defaultContext = engine.getContext(); - defaultContext.getBindings(ScriptContext.GLOBAL_SCOPE).put("foo", "hello"); + ScriptContext customContext = new SimpleScriptContext(); + customContext.setBindings(defaultContext.getBindings(ScriptContext.ENGINE_SCOPE), ScriptContext.ENGINE_SCOPE); - ScriptContext customContext = new SimpleScriptContext(); - customContext.setBindings(defaultContext.getBindings(ScriptContext.ENGINE_SCOPE), ScriptContext.ENGINE_SCOPE); + Bindings bindings = new SimpleBindings(); + bindings.put("foo", "world"); + customContext.setBindings(bindings, ScriptContext.GLOBAL_SCOPE); - Bindings bindings = new SimpleBindings(); - bindings.put("foo", "world"); - customContext.setBindings(bindings, ScriptContext.GLOBAL_SCOPE); + // engine.eval("foo = 23;"); // overrides foo in all contexts, why??? -// engine.eval("foo = 23;"); // overrides foo in all contexts, why??? + engine.eval("print(foo)"); // hello + engine.eval("print(foo)", customContext); // world + engine.eval("print(foo)", defaultContext); // hello + } - engine.eval("print(foo)"); // hello - engine.eval("print(foo)", customContext); // world - engine.eval("print(foo)", defaultContext); // hello - } + private static void test5() throws ScriptException { + NashornScriptEngine engine = createEngine(); - private static void test5() throws ScriptException { - NashornScriptEngine engine = createEngine(); + engine.eval("var obj = { foo: 'foo' };"); + engine.eval("function printFoo() { print(obj.foo) };"); - engine.eval("var obj = { foo: 'foo' };"); - engine.eval("function printFoo() { print(obj.foo) };"); + ScriptContext defaultContext = engine.getContext(); + Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); - ScriptContext defaultContext = engine.getContext(); - Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context1 = new SimpleScriptContext(); + context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); - SimpleScriptContext context1 = new SimpleScriptContext(); - context1.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context2 = new SimpleScriptContext(); + context2.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); - SimpleScriptContext context2 = new SimpleScriptContext(); - context2.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); + engine.eval("obj.foo = 'bar';", context1); + engine.eval("printFoo();", context1); + engine.eval("printFoo();", context2); + } - engine.eval("obj.foo = 'bar';", context1); - engine.eval("printFoo();", context1); - engine.eval("printFoo();", context2); - } + private static void test4() throws ScriptException { + NashornScriptEngine engine = createEngine(); - private static void test4() throws ScriptException { - NashornScriptEngine engine = createEngine(); + engine.eval("function foo() { print('bar') };"); - engine.eval("function foo() { print('bar') };"); + ScriptContext defaultContext = engine.getContext(); + Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); - ScriptContext defaultContext = engine.getContext(); - Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context = new SimpleScriptContext(); + context.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); - SimpleScriptContext context = new SimpleScriptContext(); - context.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); + engine.eval("foo();", context); + System.out.println(context.getAttribute("foo")); + } - engine.eval("foo();", context); - System.out.println(context.getAttribute("foo")); - } + private static void test3() throws ScriptException { + NashornScriptEngine engine = createEngine(); - private static void test3() throws ScriptException { - NashornScriptEngine engine = createEngine(); + ScriptContext defaultContext = engine.getContext(); + Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); - ScriptContext defaultContext = engine.getContext(); - Bindings defaultBindings = defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); + SimpleScriptContext context = new SimpleScriptContext(); + context.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); - SimpleScriptContext context = new SimpleScriptContext(); - context.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); + engine.eval("function foo() { print('bar') };", context); + engine.eval("foo();", context); - engine.eval("function foo() { print('bar') };", context); - engine.eval("foo();", context); + Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE); + System.out.println(bindings.get("foo")); + System.out.println(context.getAttribute("foo")); + } - Bindings bindings = context.getBindings(ScriptContext.ENGINE_SCOPE); - System.out.println(bindings.get("foo")); - System.out.println(context.getAttribute("foo")); - } + private static void test2() throws ScriptException { + NashornScriptEngine engine = createEngine(); + engine.eval("function foo() { print('bar') };"); - private static void test2() throws ScriptException { - NashornScriptEngine engine = createEngine(); - engine.eval("function foo() { print('bar') };"); + SimpleScriptContext context = new SimpleScriptContext(); - SimpleScriptContext context = new SimpleScriptContext(); - engine.eval("print(Function);", context); - engine.eval("foo();", context); - } + // must set bindings to context + // ScriptContext defaultContext = engine.getContext(); + // Bindings defaultBindings = + // defaultContext.getBindings(ScriptContext.ENGINE_SCOPE); + // context.setBindings(defaultBindings, ScriptContext.ENGINE_SCOPE); - private static void test1() throws ScriptException { - NashornScriptEngine engine = createEngine(); - engine.eval("function foo() { print('bar') };"); - engine.eval("foo();"); - } + engine.eval("print(Function);", context); + engine.eval("foo();", context); + } - private static NashornScriptEngine createEngine() { - return (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); - } + private static void test1() throws ScriptException { + NashornScriptEngine engine = createEngine(); + engine.eval("function foo() { print('bar') };"); + engine.eval("foo();"); + } + + private static NashornScriptEngine createEngine() { + return (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); + } } diff --git a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn2.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn2.java index fcc36f94..12611674 100644 --- a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn2.java +++ b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn2.java @@ -4,6 +4,7 @@ import javax.script.ScriptEngine; import javax.script.ScriptEngineManager; + import java.io.FileReader; import java.util.Arrays; @@ -12,28 +13,29 @@ * * @author Benjamin Winterberg */ +@SuppressWarnings("restriction") public class Nashorn2 { - public static String fun(String name) { - System.out.format("Hi there from Java, %s", name); - return "greetings from java"; - } + public static String fun(String name) { + System.out.format("Hi there from Java, %s", name); + return "greetings from java"; + } - public static void fun2(Object object) { - System.out.println(object.getClass()); - } + public static void fun2(Object object) { + System.out.println(object.getClass()); + } - public static void fun3(ScriptObjectMirror mirror) { - System.out.println(mirror.getClassName() + ": " + Arrays.toString(mirror.getOwnKeys(true))); - } + public static void fun3(ScriptObjectMirror mirror) { + System.out.println(mirror.getClassName() + ": " + Arrays.toString(mirror.getOwnKeys(true))); + } - public static void fun4(ScriptObjectMirror person) { - System.out.println("Full Name is: " + person.callMember("getFullName")); - } + public static void fun4(ScriptObjectMirror person) { + System.out.println("Full Name is: " + person.callMember("getFullName")); + } - public static void main(String[] args) throws Exception { - ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); - engine.eval(new FileReader("res/nashorn2.js")); - } + public static void main(String[] args) throws Exception { + ScriptEngine engine = new ScriptEngineManager().getEngineByName("nashorn"); + engine.eval(new FileReader("res/nashorn2.js")); + } } \ No newline at end of file From 5e23fbcc4d32e683cce7efed450cc7623bf40840 Mon Sep 17 00:00:00 2001 From: rbible Date: Sat, 10 Oct 2015 18:33:26 +0800 Subject: [PATCH 13/19] format format --- .../java8/samples/time/LocalDate1.java | 41 +++++------ .../java8/samples/time/LocalDateTime1.java | 37 +++++----- .../java8/samples/time/LocalTime1.java | 72 +++++++++---------- 3 files changed, 65 insertions(+), 85 deletions(-) diff --git a/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java b/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java index 9deed2a7..41e4e2c8 100644 --- a/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java +++ b/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java @@ -13,28 +13,21 @@ */ public class LocalDate1 { - public static void main(String[] args) { - LocalDate today = LocalDate.now(); - LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); - LocalDate yesterday = tomorrow.minusDays(2); - - System.out.println(today); - System.out.println(tomorrow); - System.out.println(yesterday); - - LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); - DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); - System.out.println(dayOfWeek); // FRIDAY - - DateTimeFormatter germanFormatter = - DateTimeFormatter - .ofLocalizedDate(FormatStyle.MEDIUM) - .withLocale(Locale.GERMAN); - - LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); - System.out.println(xmas); // 2014-12-24 - - - } - + public static void main(String[] args) { + LocalDate today = LocalDate.now(); + LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); + LocalDate yesterday = tomorrow.minusDays(2); + + System.out.println(today); + System.out.println(tomorrow); + System.out.println(yesterday); + + LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); + DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); + System.out.println(dayOfWeek); // FRIDAY + + DateTimeFormatter germanFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.GERMAN); + LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); + System.out.println(xmas); // 2014-12-24 + } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java b/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java index 78134f5d..0f33c553 100644 --- a/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java +++ b/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java @@ -14,34 +14,29 @@ */ public class LocalDateTime1 { - public static void main(String[] args) { + public static void main(String[] args) { - LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); + LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); - DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); - System.out.println(dayOfWeek); // WEDNESDAY + DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); + System.out.println(dayOfWeek); // WEDNESDAY - Month month = sylvester.getMonth(); - System.out.println(month); // DECEMBER + Month month = sylvester.getMonth(); + System.out.println(month); // DECEMBER - long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); - System.out.println(minuteOfDay); // 1439 + long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); + System.out.println(minuteOfDay); // 1439 - Instant instant = sylvester - .atZone(ZoneId.systemDefault()) - .toInstant(); + Instant instant = sylvester.atZone(ZoneId.systemDefault()).toInstant(); - Date legacyDate = Date.from(instant); - System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014 + Date legacyDate = Date.from(instant); + System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014 + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy - HH:mm"); - DateTimeFormatter formatter = - DateTimeFormatter - .ofPattern("MMM dd, yyyy - HH:mm"); - - LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); - String string = parsed.format(formatter); - System.out.println(string); // Nov 03, 2014 - 07:13 - } + LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); + String string = parsed.format(formatter); + System.out.println(string); // Nov 03, 2014 - 07:13 + } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java b/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java index 763a81ff..803c78cc 100644 --- a/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java +++ b/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java @@ -15,58 +15,50 @@ */ public class LocalTime1 { - public static void main(String[] args) { + public static void main(String[] args) { - // get the current time - Clock clock = Clock.systemDefaultZone(); - long t0 = clock.millis(); - System.out.println(t0); + // get the current time + Clock clock = Clock.systemDefaultZone(); + long t0 = clock.millis(); + System.out.println(t0); - Instant instant = clock.instant(); - Date legacyDate = Date.from(instant); + Instant instant = clock.instant(); + Date legacyDate = Date.from(instant); + System.out.println(legacyDate); + ZoneId zone1 = ZoneId.of("Europe/Berlin"); + ZoneId zone2 = ZoneId.of("Brazil/East"); - ZoneId zone1 = ZoneId.of("Europe/Berlin"); - ZoneId zone2 = ZoneId.of("Brazil/East"); + System.out.println(zone1.getRules()); + System.out.println(zone2.getRules()); - System.out.println(zone1.getRules()); - System.out.println(zone2.getRules()); + // time + LocalTime now1 = LocalTime.now(zone1); + LocalTime now2 = LocalTime.now(zone2); - // time - LocalTime now1 = LocalTime.now(zone1); - LocalTime now2 = LocalTime.now(zone2); + System.out.println(now1); + System.out.println(now2); - System.out.println(now1); - System.out.println(now2); + System.out.println(now1.isBefore(now2)); // false - System.out.println(now1.isBefore(now2)); // false + long hoursBetween = ChronoUnit.HOURS.between(now1, now2); + long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); + System.out.println(hoursBetween); + System.out.println(minutesBetween); - long hoursBetween = ChronoUnit.HOURS.between(now1, now2); - long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); - System.out.println(hoursBetween); - System.out.println(minutesBetween); + // create time + LocalTime now = LocalTime.now(); + System.out.println(now); - // create time + LocalTime late = LocalTime.of(23, 59, 59); + System.out.println(late); - LocalTime now = LocalTime.now(); - System.out.println(now); + DateTimeFormatter germanFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).withLocale(Locale.GERMAN); - LocalTime late = LocalTime.of(23, 59, 59); - System.out.println(late); - - DateTimeFormatter germanFormatter = - DateTimeFormatter - .ofLocalizedTime(FormatStyle.SHORT) - .withLocale(Locale.GERMAN); - - LocalTime leetTime = LocalTime.parse("13:37", germanFormatter); - System.out.println(leetTime); - - - // to legacy date - - - } + LocalTime leetTime = LocalTime.parse("13:37", germanFormatter); + System.out.println(leetTime); + // to legacy date + } } \ No newline at end of file From 1f9c9a5da7021295e1c2d7fc2eb1398664978871 Mon Sep 17 00:00:00 2001 From: rbible Date: Tue, 15 Nov 2016 17:12:31 +0800 Subject: [PATCH 14/19] .. --- .../samples/concurrent/AtomicIntegerDemo.java | 2 +- .../concurrent/CompletableFuture1.java | 1 + .../concurrent/ConcurrentHashMapDemo1.java | 9 +++---- .../Executors1SingleThread.java} | 6 ++--- .../Executors2FixedThread.java} | 23 +++++++++--------- .../Executors3ScheduledStealingThread.java} | 10 ++++---- .../samples/concurrent/{ => lock}/Lock1.java | 18 ++++++-------- .../samples/concurrent/{ => lock}/Lock2.java | 4 +++- .../samples/concurrent/{ => lock}/Lock3.java | 4 +++- .../samples/concurrent/{ => lock}/Lock4.java | 9 ++++--- .../samples/concurrent/{ => lock}/Lock5.java | 4 +++- .../samples/concurrent/{ => lock}/Lock6.java | 4 +++- .../{ => semaphore}/Semaphore1.java | 4 +++- .../{ => semaphore}/Semaphore2.java | 4 +++- .../{ => synchronize}/Synchronized1.java | 4 +++- .../{ => synchronize}/Synchronized2.java | 4 +++- .../java8/samples/nashorn/Nashorn10.java | 24 +++++++++---------- .../java8/samples/stream/Optional1.java | 15 ++++++++---- 18 files changed, 83 insertions(+), 66 deletions(-) rename src/main/java/com/winterbe/java8/samples/concurrent/{Executors1.java => executor/Executors1SingleThread.java} (92%) rename src/main/java/com/winterbe/java8/samples/concurrent/{Executors2.java => executor/Executors2FixedThread.java} (80%) rename src/main/java/com/winterbe/java8/samples/concurrent/{Executors3.java => executor/Executors3ScheduledStealingThread.java} (93%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => lock}/Lock1.java (87%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => lock}/Lock2.java (88%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => lock}/Lock3.java (91%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => lock}/Lock4.java (85%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => lock}/Lock5.java (91%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => lock}/Lock6.java (89%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => semaphore}/Semaphore1.java (90%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => semaphore}/Semaphore2.java (90%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => synchronize}/Synchronized1.java (90%) rename src/main/java/com/winterbe/java8/samples/concurrent/{ => synchronize}/Synchronized2.java (86%) diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java b/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java index 48919bed..72598ba7 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java @@ -35,7 +35,7 @@ private static void testAccumulate() { atomicInt.set(0); ExecutorService executor = Executors.newFixedThreadPool(2); IntStream.range(0, NUM_INCREMENTS).forEach(i -> { - Runnable task = () -> atomicInt.accumulateAndGet(i, (n, m) -> n + m); + Runnable task = () -> atomicInt.accumulateAndGet(i, (n, m) -> n + m); executor.submit(task); }); ConcurrentUtils.stop(executor); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java b/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java index 05b32a65..9ff12a9f 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java @@ -12,5 +12,6 @@ public static void main(String[] args) throws ExecutionException, InterruptedExc CompletableFuture future = new CompletableFuture<>(); future.complete("42"); future.thenAccept(System.out::println).thenAccept(v -> System.out.println("done")); + } } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMapDemo1.java b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMapDemo1.java index 8e06d63b..4ee3eb4a 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMapDemo1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/ConcurrentHashMapDemo1.java @@ -23,8 +23,7 @@ private static void testReduce() { map.putIfAbsent("r2", "d2"); map.putIfAbsent("c3", "p0"); - String reduced = map.reduce(1, (key, value) -> key + "=" + value, - (s1, s2) -> s1 + ", " + s2); + String reduced = map.reduce(1, (key, value) -> key + "=" + value, (s1, s2) -> s1 + ", " + s2); System.out.println(reduced); } @@ -68,8 +67,10 @@ private static void testForEach() { map.putIfAbsent("r2", "d2"); map.putIfAbsent("c3", "p0"); - map.forEach(1, (key, value) -> System.out.printf("key: %s; value: %s; thread: %s\n", key, value, Thread.currentThread().getName())); -// map.forEach(5, (key, value) -> System.out.printf("key: %s; value: %s; thread: %s\n", key, value, Thread.currentThread().getName())); + map.forEach(1, + (key, value) -> System.out.printf("key: %s; value: %s; thread: %s\n", key, value, Thread.currentThread().getName())); + // map.forEach(5, (key, value) -> System.out.printf("key: %s; value: %s; thread: %s\n", key, + // value, Thread.currentThread().getName())); System.out.println(map.mappingCount()); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors1SingleThread.java similarity index 92% rename from src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors1SingleThread.java index 40f63a02..1085badc 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Executors1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors1SingleThread.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.executor; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -7,10 +7,10 @@ /** * @author Benjamin Winterberg */ -public class Executors1 { +public class Executors1SingleThread { public static void main(String[] args) { - test1(3); + test1(2); // test1(7); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors2FixedThread.java similarity index 80% rename from src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors2FixedThread.java index 9d7ad04f..cbcee4af 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Executors2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors2FixedThread.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.executor; import java.util.concurrent.ExecutionException; import java.util.concurrent.ExecutorService; @@ -10,11 +10,12 @@ /** * @author Benjamin Winterberg */ -public class Executors2 { +@SuppressWarnings("unused") +public class Executors2FixedThread { public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException { - // test1(); - // test2(); + test1(); +// test2(); test3(); } @@ -23,17 +24,17 @@ private static void test3() throws InterruptedException, ExecutionException, Tim Future future = executor.submit(() -> { try { - TimeUnit.SECONDS.sleep(2); + TimeUnit.SECONDS.sleep(1); return 123; } catch (InterruptedException e) { throw new IllegalStateException("task interrupted", e); } }); - future.get(1, TimeUnit.SECONDS); + Integer integer = future.get(2, TimeUnit.SECONDS); + System.out.println("test 3 result : " + integer); } - @SuppressWarnings("unused") private static void test2() throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newFixedThreadPool(1); @@ -47,10 +48,10 @@ private static void test2() throws InterruptedException, ExecutionException { }); executor.shutdownNow(); - future.get(); + Integer integer = future.get(); + System.out.println("test2 result : " + integer); } - @SuppressWarnings("unused") private static void test1() throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newFixedThreadPool(1); @@ -64,11 +65,9 @@ private static void test1() throws InterruptedException, ExecutionException { }); System.out.println("future done: " + future.isDone()); - Integer result = future.get(); - System.out.println("future done: " + future.isDone()); - System.out.print("result: " + result); + System.out.println("test1 result: " + result); executor.shutdownNow(); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors3ScheduledStealingThread.java similarity index 93% rename from src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java rename to src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors3ScheduledStealingThread.java index e468a561..34569979 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Executors3.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors3ScheduledStealingThread.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.executor; import java.util.Arrays; import java.util.List; @@ -13,22 +13,22 @@ /** * @author Benjamin Winterberg */ -public class Executors3 { +public class Executors3ScheduledStealingThread { public static void main(String[] args) throws InterruptedException, ExecutionException { - test1(); + // test1(); // test2(); // test3(); // test4(); - // test5(); + test5(); } @SuppressWarnings("unused") private static void test5() throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newWorkStealingPool(); - List> callables = Arrays.asList(callable("task1", 2), callable("task2", 1), callable("task3", 3)); + List> callables = Arrays.asList(callable("task1", 2), callable("task2", 4), callable("task3", 3)); String result = executor.invokeAny(callables); System.out.println(result); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock1.java similarity index 87% rename from src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock1.java index 96f92d3b..ee27c4e0 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock1.java @@ -1,21 +1,25 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.lock; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.ReentrantLock; import java.util.stream.IntStream; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ public class Lock1 { private static final int NUM_INCREMENTS = 10000; - private static ReentrantLock lock = new ReentrantLock(); - private static int count = 0; + public static void main(String[] args) { + testLock(); + } + private static void increment() { lock.lock(); try { @@ -25,19 +29,11 @@ private static void increment() { } } - public static void main(String[] args) { - testLock(); - } - private static void testLock() { count = 0; - ExecutorService executor = Executors.newFixedThreadPool(2); - IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Lock1::increment)); - ConcurrentUtils.stop(executor); - System.out.println(count); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock2.java similarity index 88% rename from src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock2.java index a172655b..223ff795 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock2.java @@ -1,9 +1,11 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.lock; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.ReentrantLock; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock3.java similarity index 91% rename from src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock3.java index 1cd481a1..a7fd2fb8 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock3.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock3.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.lock; import java.util.HashMap; import java.util.Map; @@ -7,6 +7,8 @@ import java.util.concurrent.locks.ReadWriteLock; import java.util.concurrent.locks.ReentrantReadWriteLock; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock4.java similarity index 85% rename from src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock4.java index c4e0708e..6f22c04b 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock4.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock4.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.lock; import java.util.HashMap; import java.util.Map; @@ -6,6 +6,8 @@ import java.util.concurrent.Executors; import java.util.concurrent.locks.StampedLock; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ @@ -13,11 +15,8 @@ public class Lock4 { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); - Map map = new HashMap<>(); - StampedLock lock = new StampedLock(); - executor.submit(() -> { long stamp = lock.writeLock(); try { @@ -31,7 +30,7 @@ public static void main(String[] args) { Runnable readTask = () -> { long stamp = lock.readLock(); try { - System.out.println(map.get("foo")); + System.out.println("read: "+map.get("foo")); ConcurrentUtils.sleep(1); } finally { lock.unlockRead(stamp); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock5.java similarity index 91% rename from src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock5.java index 3c804ddd..cd929c08 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock5.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock5.java @@ -1,9 +1,11 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.lock; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.StampedLock; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock6.java similarity index 89% rename from src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock6.java index 611ee89b..5daef8b8 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Lock6.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock6.java @@ -1,9 +1,11 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.lock; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.concurrent.locks.StampedLock; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore1.java similarity index 90% rename from src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore1.java index 062647a2..e4a0119d 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore1.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.semaphore; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -6,6 +6,8 @@ import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore2.java similarity index 90% rename from src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore2.java index 7f146aee..2aa325e0 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Semaphore2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore2.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.semaphore; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; @@ -6,6 +6,8 @@ import java.util.concurrent.TimeUnit; import java.util.stream.IntStream; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java b/src/main/java/com/winterbe/java8/samples/concurrent/synchronize/Synchronized1.java similarity index 90% rename from src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/synchronize/Synchronized1.java index 4211567c..8cea6a77 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/synchronize/Synchronized1.java @@ -1,9 +1,11 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.synchronize; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.IntStream; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java b/src/main/java/com/winterbe/java8/samples/concurrent/synchronize/Synchronized2.java similarity index 86% rename from src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/synchronize/Synchronized2.java index 52737d6e..501c7a70 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Synchronized2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/synchronize/Synchronized2.java @@ -1,9 +1,11 @@ -package com.winterbe.java8.samples.concurrent; +package com.winterbe.java8.samples.concurrent.synchronize; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import java.util.stream.IntStream; +import com.winterbe.java8.samples.concurrent.ConcurrentUtils; + /** * @author Benjamin Winterberg */ diff --git a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java index 0e0eb18e..9fc8772f 100644 --- a/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java +++ b/src/main/java/com/winterbe/java8/samples/nashorn/Nashorn10.java @@ -1,29 +1,29 @@ package com.winterbe.java8.samples.nashorn; -import jdk.nashorn.api.scripting.NashornScriptEngine; +import java.util.concurrent.TimeUnit; import javax.script.ScriptEngineManager; import javax.script.ScriptException; -import java.util.concurrent.TimeUnit; +import jdk.nashorn.api.scripting.NashornScriptEngine; /** * @author Benjamin Winterberg */ +@SuppressWarnings("restriction") public class Nashorn10 { - @SuppressWarnings("restriction") public static void main(String[] args) throws ScriptException, NoSuchMethodException { - NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); - engine.eval("load('res/nashorn10.js')"); + NashornScriptEngine engine = (NashornScriptEngine) new ScriptEngineManager().getEngineByName("nashorn"); + engine.eval("load('res/nashorn10.js')"); - long t0 = System.nanoTime(); + long t0 = System.nanoTime(); - for (int i = 0; i < 100000; i++) { - engine.invokeFunction("testPerf"); - } + for (int i = 0; i < 100000; i++) { + engine.invokeFunction("testPerf"); + } - long took = System.nanoTime() - t0; - System.out.format("Elapsed time: %d ms", TimeUnit.NANOSECONDS.toMillis(took)); - } + long took = System.nanoTime() - t0; + System.out.format("Elapsed time: %d ms", TimeUnit.NANOSECONDS.toMillis(took)); + } } diff --git a/src/main/java/com/winterbe/java8/samples/stream/Optional1.java b/src/main/java/com/winterbe/java8/samples/stream/Optional1.java index efd779e2..74e1a1db 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Optional1.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Optional1.java @@ -10,11 +10,16 @@ public class Optional1 { public static void main(String[] args) { Optional optional = Optional.of("bam"); - optional.isPresent(); // true - optional.get(); // "bam" - optional.orElse("fallback"); // "bam" + System.out.println(optional.isPresent()); // true + System.out.println(optional.get()); // "bam" + System.out.println(optional.orElse("fallback")); // "bam" - optional.ifPresent((s) -> System.out.println(s.charAt(0))); // "b" - } + optional.ifPresent((s) -> System.out.println(s.charAt(0))); // "b" + + Optional optional2 = Optional.ofNullable("."); + System.out.println(optional2.isPresent()); + System.out.println(optional2.get()); + System.out.println(optional2.orElse("fallback")); + } } \ No newline at end of file From 72567074a3b1337a1fbbf3484545546e4bb5a928 Mon Sep 17 00:00:00 2001 From: Beck Date: Fri, 5 May 2017 12:38:38 +0800 Subject: [PATCH 15/19] lamdba not --- .../samples/lambda/FunctionInterface.java | 1 + .../lambda/InnerFunctionInterface.java | 5 ++- .../java8/samples/lambda/InterfaceUsage.java | 1 + ...ArraysLambda.java => LambdaArraySort.java} | 38 +++++++++++++++---- .../java8/samples/lambda/LambdaForEach.java} | 11 +++--- 5 files changed, 40 insertions(+), 16 deletions(-) rename src/main/java/com/winterbe/java8/samples/lambda/{ArraysLambda.java => LambdaArraySort.java} (65%) rename src/{com/winterbe/java8/samples/lambda/Lambda5.java => main/java/com/winterbe/java8/samples/lambda/LambdaForEach.java} (63%) diff --git a/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java index 265dafe5..c572ec29 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java @@ -2,6 +2,7 @@ /** * @author Benjamin Winterberg + * @Message 可用于实现逻辑与调用的分离,在一处对functionInterface进行定义,在另一处抽象调用 */ public class FunctionInterface { diff --git a/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java index 7c42a961..1a3ee678 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/InnerFunctionInterface.java @@ -2,12 +2,13 @@ /** * @author Benjamin Winterberg + * @Message 1、内部FunctionInterface用法,实现与调用分离;2、lamdba内部可以操作类成员变量 */ public class InnerFunctionInterface { - static int outerStaticNum; + private static int outerStaticNum; - int outerNum; + private int outerNum; void testScopes() { int num = 1; diff --git a/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java b/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java index 27404d6a..8f44cabe 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/InterfaceUsage.java @@ -2,6 +2,7 @@ /** * @author Benjamin Winterberg + * @Message interface default define;static define */ public class InterfaceUsage { diff --git a/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java b/src/main/java/com/winterbe/java8/samples/lambda/LambdaArraySort.java similarity index 65% rename from src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java rename to src/main/java/com/winterbe/java8/samples/lambda/LambdaArraySort.java index d94799a6..bdab419c 100644 --- a/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/LambdaArraySort.java @@ -9,40 +9,62 @@ /** * @author Benjamin Winterberg */ -public class ArraysLambda { +public class LambdaArraySort { public static void main(String[] args) { List names = Arrays.asList("peter", "anna", "mike", "xenia"); + lambda4Sort(names, Collections.reverseOrder()); + System.out.println(names); + usualSort(names); + System.out.println(names); lambda1Sort(names); + System.out.println(names); lambda2Sort(names); + System.out.println(names); lambda3Sort(names); System.out.println(names); - names.sort(Collections.reverseOrder()); - System.out.println(names); List names2 = Arrays.asList("peter", null, "anna", "mike", "xenia"); - names2.sort(Comparator.nullsLast(String::compareTo)); + lambda4Sort(names2, Comparator.nullsLast(String::compareTo)); System.out.println(names2); - List names3 = null; - Optional.ofNullable(names3).ifPresent(list -> list.sort(Comparator.naturalOrder())); + + List names3 = Arrays.asList("2", "1"); + lambda5Sort(names3); System.out.println(names3); } + private static void lambda5Sort(List names3) { + Optional.ofNullable(names3).ifPresent(list -> list.sort(Comparator.naturalOrder())); + } + + private static void lambda4Sort(List names2, Comparator c) { + names2.sort(c); + } + + /** + * simple + */ private static void lambda3Sort(List names) { - Collections.sort(names, (a, b) -> b.compareTo(a)); + Collections.sort(names, (a, b) -> a.compareTo(b)); } + /** + * parameter type + */ private static void lambda2Sort(List names) { Collections.sort(names, (String a, String b) -> b.compareTo(a)); } + /** + * method body + */ private static void lambda1Sort(List names) { Collections.sort(names, (String a, String b) -> { - return b.compareTo(a); + return a.compareTo(b); }); } diff --git a/src/com/winterbe/java8/samples/lambda/Lambda5.java b/src/main/java/com/winterbe/java8/samples/lambda/LambdaForEach.java similarity index 63% rename from src/com/winterbe/java8/samples/lambda/Lambda5.java rename to src/main/java/com/winterbe/java8/samples/lambda/LambdaForEach.java index 68a311f4..4997a18b 100644 --- a/src/com/winterbe/java8/samples/lambda/Lambda5.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/LambdaForEach.java @@ -6,17 +6,16 @@ /** * Created by grijesh */ -public class Lambda5 { +public class LambdaForEach { //Pre-Defined Functional Interfaces public static void main(String... args) { //BiConsumer Example - BiConsumer printKeyAndValue - = (key,value) -> System.out.println(key+"-"+value); + BiConsumer printKeyAndValue = (key, value) -> System.out.println(key + "-" + value); - printKeyAndValue.accept("One",1); - printKeyAndValue.accept("Two",2); + printKeyAndValue.accept("One", 1); + printKeyAndValue.accept("Two", 2); System.out.println("##################"); @@ -26,7 +25,7 @@ public static void main(String... args) { dummyValues.put("Two", 2); dummyValues.put("Three", 3); - dummyValues.forEach((key,value) -> System.out.println(key+"-"+value)); + dummyValues.forEach((key, value) -> System.out.println(key + "-" + value)); } } From 68178cb653c56c429d9310fd8d015aff8cdcf821 Mon Sep 17 00:00:00 2001 From: Beck Date: Fri, 5 May 2017 18:34:36 +0800 Subject: [PATCH 16/19] note --- .../samples/concurrent/AtomicIntegerDemo.java | 2 +- .../concurrent/CompletableFuture1.java | 3 +- .../samples/concurrent/LongAccumulator1.java | 5 +-- .../java8/samples/concurrent/LongAdder1.java | 2 +- .../java8/samples/concurrent/Threads1.java | 6 ++-- .../executor/Executors1SingleThread.java | 5 +-- .../executor/Executors2FixedThread.java | 4 +-- .../Executors3ScheduledStealingThread.java | 35 ++++++++++++++----- ...Lock6.java => ConvertToWriteLockDemo.java} | 2 +- .../lock/{Lock2.java => LambdaLock.java} | 2 +- .../{Lock5.java => OptimisticLockDemo.java} | 4 +-- .../{Lock3.java => ReadWriteLockDemo.java} | 4 +-- .../{Lock1.java => ReentrantLockDemo.java} | 4 +-- .../lock/{Lock4.java => StampedLockDemo.java} | 2 +- .../{Semaphore1.java => SemaphoreDemo.java} | 4 +-- .../{Semaphore2.java => SemaphoreDemo2.java} | 4 +-- .../java8/samples/misc/Concurrency1.java | 2 ++ .../winterbe/java8/samples/misc/String1.java | 12 +++---- 18 files changed, 61 insertions(+), 41 deletions(-) rename src/main/java/com/winterbe/java8/samples/concurrent/lock/{Lock6.java => ConvertToWriteLockDemo.java} (96%) rename src/main/java/com/winterbe/java8/samples/concurrent/lock/{Lock2.java => LambdaLock.java} (97%) rename src/main/java/com/winterbe/java8/samples/concurrent/lock/{Lock5.java => OptimisticLockDemo.java} (94%) rename src/main/java/com/winterbe/java8/samples/concurrent/lock/{Lock3.java => ReadWriteLockDemo.java} (94%) rename src/main/java/com/winterbe/java8/samples/concurrent/lock/{Lock1.java => ReentrantLockDemo.java} (93%) rename src/main/java/com/winterbe/java8/samples/concurrent/lock/{Lock4.java => StampedLockDemo.java} (97%) rename src/main/java/com/winterbe/java8/samples/concurrent/semaphore/{Semaphore1.java => SemaphoreDemo.java} (95%) rename src/main/java/com/winterbe/java8/samples/concurrent/semaphore/{Semaphore2.java => SemaphoreDemo2.java} (95%) diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java b/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java index 72598ba7..c5a56d48 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/AtomicIntegerDemo.java @@ -10,7 +10,7 @@ */ public class AtomicIntegerDemo { - private static final int NUM_INCREMENTS = 1000; + private static final int NUM_INCREMENTS = 10; private static AtomicInteger atomicInt = new AtomicInteger(0); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java b/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java index 9ff12a9f..70de21b9 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/CompletableFuture1.java @@ -11,7 +11,6 @@ public class CompletableFuture1 { public static void main(String[] args) throws ExecutionException, InterruptedException { CompletableFuture future = new CompletableFuture<>(); future.complete("42"); - future.thenAccept(System.out::println).thenAccept(v -> System.out.println("done")); - + future.thenAccept(System.out::println).thenAccept(v -> System.out.println("done: "+v)); } } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java b/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java index a3b40433..adc82021 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/LongAccumulator1.java @@ -8,6 +8,7 @@ /** * @author Benjamin Winterberg + * @Message 累加计算 */ public class LongAccumulator1 { @@ -19,8 +20,8 @@ private static void testAccumulate() { LongBinaryOperator op = (x, y) -> 2 * x + y; LongAccumulator accumulator = new LongAccumulator(op, 1L); ExecutorService executor = Executors.newFixedThreadPool(2); - IntStream.range(0, 10).forEach(i -> executor.submit(() -> accumulator.accumulate(i))); + IntStream.range(0, 3).forEach(i -> executor.submit(() -> accumulator.accumulate(i))); ConcurrentUtils.stop(executor); System.out.format("Add: %d\n", accumulator.getThenReset()); } -} +} \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java b/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java index 413b0f0e..3fb70096 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/LongAdder1.java @@ -10,7 +10,7 @@ */ public class LongAdder1 { - private static final int NUM_INCREMENTS = 10000; + private static final int NUM_INCREMENTS = 3; private static LongAdder adder = new LongAdder(); public static void main(String[] args) { diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java b/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java index f3bfba2f..4cfd84a9 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/Threads1.java @@ -8,9 +8,9 @@ public class Threads1 { public static void main(String[] args) { - test1(); - // test2(); - // test3(); +// test1(); +// test2(); + test3(); } @SuppressWarnings("unused") diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors1SingleThread.java b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors1SingleThread.java index 1085badc..e7784bab 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors1SingleThread.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors1SingleThread.java @@ -6,11 +6,12 @@ /** * @author Benjamin Winterberg + * @Message support termination when thread running */ public class Executors1SingleThread { public static void main(String[] args) { - test1(2); + test1(10); // test1(7); } @@ -43,4 +44,4 @@ static void stop(ExecutorService executor) { System.out.println("shutdown finished"); } } -} +} \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors2FixedThread.java b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors2FixedThread.java index cbcee4af..10b2c800 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors2FixedThread.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors2FixedThread.java @@ -9,12 +9,13 @@ /** * @author Benjamin Winterberg + * @Message future */ @SuppressWarnings("unused") public class Executors2FixedThread { public static void main(String[] args) throws ExecutionException, InterruptedException, TimeoutException { - test1(); + test1(); // test2(); test3(); } @@ -71,5 +72,4 @@ private static void test1() throws InterruptedException, ExecutionException { executor.shutdownNow(); } - } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors3ScheduledStealingThread.java b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors3ScheduledStealingThread.java index 34569979..a6c15a0d 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors3ScheduledStealingThread.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/executor/Executors3ScheduledStealingThread.java @@ -12,23 +12,26 @@ /** * @author Benjamin Winterberg + * @Message stealing */ public class Executors3ScheduledStealingThread { public static void main(String[] args) throws InterruptedException, ExecutionException { - // test1(); + test1(); // test2(); - // test3(); - - // test4(); - test5(); +// test3(); +// test4(); +// test5(); } + /** + * @Message 自动判断执行任何一个thread + */ @SuppressWarnings("unused") private static void test5() throws InterruptedException, ExecutionException { ExecutorService executor = Executors.newWorkStealingPool(); - List> callables = Arrays.asList(callable("task1", 2), callable("task2", 4), callable("task3", 3)); + List> callables = Arrays.asList(callable("task1", 9), callable("task2", 4), callable("task3", 3)); String result = executor.invokeAny(callables); System.out.println(result); @@ -43,6 +46,10 @@ private static Callable callable(String result, long sleepSeconds) { }; } + /** + * @Message 逐个执行 thread + * @throws InterruptedException + */ @SuppressWarnings("unused") private static void test4() throws InterruptedException { ExecutorService executor = Executors.newWorkStealingPool(); @@ -60,6 +67,9 @@ private static void test4() throws InterruptedException { executor.shutdown(); } + /** + * @Menssage 周期执行task + */ @SuppressWarnings("unused") private static void test3() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); @@ -67,15 +77,18 @@ private static void test3() { Runnable task = () -> { try { TimeUnit.SECONDS.sleep(2); - System.out.println("Scheduling: " + System.nanoTime()); + System.out.println("Scheduling: " + System.nanoTime() + "," + System.currentTimeMillis()); } catch (InterruptedException e) { System.err.println("task interrupted"); } }; - executor.scheduleWithFixedDelay(task, 0, 1, TimeUnit.SECONDS); + executor.scheduleWithFixedDelay(task, 0, 10, TimeUnit.SECONDS); } + /** + * delay and period + */ @SuppressWarnings("unused") private static void test2() { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); @@ -85,12 +98,16 @@ private static void test2() { executor.scheduleAtFixedRate(task, initialDelay, period, TimeUnit.SECONDS); } + /** + * @Message delay + * @throws InterruptedException + */ private static void test1() throws InterruptedException { ScheduledExecutorService executor = Executors.newScheduledThreadPool(1); Runnable task = () -> System.out.println("Scheduling: " + System.nanoTime()); int delay = 3; - ScheduledFuture future = executor.schedule(task, delay, TimeUnit.SECONDS); + ScheduledFuture future = executor.schedule(task, 3, TimeUnit.SECONDS); TimeUnit.MILLISECONDS.sleep(1337); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock6.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/ConvertToWriteLockDemo.java similarity index 96% rename from src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock6.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/ConvertToWriteLockDemo.java index 5daef8b8..8f98833d 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock6.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/ConvertToWriteLockDemo.java @@ -9,7 +9,7 @@ /** * @author Benjamin Winterberg */ -public class Lock6 { +public class ConvertToWriteLockDemo { private static int count = 0; diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock2.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/LambdaLock.java similarity index 97% rename from src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/LambdaLock.java index 223ff795..738a0686 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/LambdaLock.java @@ -9,7 +9,7 @@ /** * @author Benjamin Winterberg */ -public class Lock2 { +public class LambdaLock { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock5.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/OptimisticLockDemo.java similarity index 94% rename from src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock5.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/OptimisticLockDemo.java index cd929c08..fc8b82ae 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock5.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/OptimisticLockDemo.java @@ -9,7 +9,7 @@ /** * @author Benjamin Winterberg */ -public class Lock5 { +public class OptimisticLockDemo { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); @@ -21,7 +21,7 @@ public static void main(String[] args) { System.out.println("Optimistic Lock Valid: " + lock.validate(stamp)); ConcurrentUtils.sleep(1); System.out.println("Optimistic Lock Valid: " + lock.validate(stamp)); - ConcurrentUtils.sleep(2); + ConcurrentUtils.sleep(4); System.out.println("Optimistic Lock Valid: " + lock.validate(stamp)); } finally { lock.unlock(stamp); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock3.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/ReadWriteLockDemo.java similarity index 94% rename from src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock3.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/ReadWriteLockDemo.java index a7fd2fb8..530c1244 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock3.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/ReadWriteLockDemo.java @@ -12,7 +12,7 @@ /** * @author Benjamin Winterberg */ -public class Lock3 { +public class ReadWriteLockDemo { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); @@ -21,7 +21,7 @@ public static void main(String[] args) { executor.submit(() -> { lock.writeLock().lock(); try { - ConcurrentUtils.sleep(1); + ConcurrentUtils.sleep(10); map.put("foo", "bar"); } finally { lock.writeLock().unlock(); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock1.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/ReentrantLockDemo.java similarity index 93% rename from src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/ReentrantLockDemo.java index ee27c4e0..d1da35be 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/ReentrantLockDemo.java @@ -10,7 +10,7 @@ /** * @author Benjamin Winterberg */ -public class Lock1 { +public class ReentrantLockDemo { private static final int NUM_INCREMENTS = 10000; private static ReentrantLock lock = new ReentrantLock(); @@ -32,7 +32,7 @@ private static void increment() { private static void testLock() { count = 0; ExecutorService executor = Executors.newFixedThreadPool(2); - IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Lock1::increment)); + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(ReentrantLockDemo::increment)); ConcurrentUtils.stop(executor); System.out.println(count); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock4.java b/src/main/java/com/winterbe/java8/samples/concurrent/lock/StampedLockDemo.java similarity index 97% rename from src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock4.java rename to src/main/java/com/winterbe/java8/samples/concurrent/lock/StampedLockDemo.java index 6f22c04b..a1da2376 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/lock/Lock4.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/lock/StampedLockDemo.java @@ -11,7 +11,7 @@ /** * @author Benjamin Winterberg */ -public class Lock4 { +public class StampedLockDemo { public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(2); diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore1.java b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/SemaphoreDemo.java similarity index 95% rename from src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore1.java rename to src/main/java/com/winterbe/java8/samples/concurrent/semaphore/SemaphoreDemo.java index e4a0119d..5cb64cfd 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore1.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/SemaphoreDemo.java @@ -11,7 +11,7 @@ /** * @author Benjamin Winterberg */ -public class Semaphore1 { +public class SemaphoreDemo { private static final int NUM_INCREMENTS = 10000; private static Semaphore semaphore = new Semaphore(1); @@ -23,7 +23,7 @@ public static void main(String[] args) { private static void testIncrement() { ExecutorService executor = Executors.newFixedThreadPool(2); - IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(Semaphore1::increment)); + IntStream.range(0, NUM_INCREMENTS).forEach(i -> executor.submit(SemaphoreDemo::increment)); ConcurrentUtils.stop(executor); System.out.println("Increment: " + count); } diff --git a/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore2.java b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/SemaphoreDemo2.java similarity index 95% rename from src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore2.java rename to src/main/java/com/winterbe/java8/samples/concurrent/semaphore/SemaphoreDemo2.java index 2aa325e0..b5fb7bc0 100644 --- a/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/Semaphore2.java +++ b/src/main/java/com/winterbe/java8/samples/concurrent/semaphore/SemaphoreDemo2.java @@ -11,13 +11,13 @@ /** * @author Benjamin Winterberg */ -public class Semaphore2 { +public class SemaphoreDemo2 { private static Semaphore semaphore = new Semaphore(5); public static void main(String[] args) { ExecutorService executor = Executors.newFixedThreadPool(10); - IntStream.range(0, 10).forEach(i -> executor.submit(Semaphore2::doWork)); + IntStream.range(0, 10).forEach(i -> executor.submit(SemaphoreDemo2::doWork)); ConcurrentUtils.stop(executor); } diff --git a/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java b/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java index b107d5e7..862a2c59 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/Concurrency1.java @@ -13,6 +13,7 @@ public static void main(String[] args) { for (int i = 0; i < 100; i++) { concurrentHashMap.put(i, UUID.randomUUID()); } + int threshold = 1; concurrentHashMap.forEachValue(threshold, System.out::println); concurrentHashMap.forEach((id, uuid) -> { @@ -20,6 +21,7 @@ public static void main(String[] args) { System.out.println(String.format("%s: %s", id, uuid)); } }); + UUID searchResult = concurrentHashMap.search(threshold, (id, uuid) -> { if (String.valueOf(uuid).startsWith(String.valueOf(id))) { return uuid; diff --git a/src/main/java/com/winterbe/java8/samples/misc/String1.java b/src/main/java/com/winterbe/java8/samples/misc/String1.java index b52c9ab6..c4bc12bc 100644 --- a/src/main/java/com/winterbe/java8/samples/misc/String1.java +++ b/src/main/java/com/winterbe/java8/samples/misc/String1.java @@ -10,21 +10,21 @@ public class String1 { public static void main(String[] args) { - testJoin(); + testChars(); - testPatternPredicate(); testPatternSplit(); + testPatternPredicate(); + testJoin(); } private static void testChars() { - String string = "foobar:foo:bar".chars().distinct().mapToObj(c -> String.valueOf((char) c)).sorted() - .collect(Collectors.joining()); + String string = "foobar:foo:bar".chars().distinct().mapToObj(c -> String.valueOf((char) c)).sorted().collect(Collectors.joining()); System.out.println(string); } private static void testPatternSplit() { - String string = Pattern.compile(":").splitAsStream("foobar:foo:bar").filter(s -> s.contains("bar")).sorted() - .collect(Collectors.joining(":")); + String string = Pattern.compile(":").splitAsStream("foobar:foo:bar") + .filter(s -> s.contains("bar")).sorted().collect(Collectors.joining(":")); System.out.println(string); } From d9fb2f2e0d052a39d59fb5165759ac3cec69c854 Mon Sep 17 00:00:00 2001 From: Beck Date: Mon, 8 May 2017 00:56:38 +0800 Subject: [PATCH 17/19] format --- .../winterbe/java8/samples/stream/Optional2.java | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/src/main/java/com/winterbe/java8/samples/stream/Optional2.java b/src/main/java/com/winterbe/java8/samples/stream/Optional2.java index 920c82be..96b939f3 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Optional2.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Optional2.java @@ -5,7 +5,6 @@ /** * Examples how to avoid null checks with Optional: - * * http://winterbe.com/posts/2015/03/15/avoid-null-checks-in-java/ * * @author Benjamin Winterberg @@ -46,24 +45,20 @@ public static Optional resolve(Supplier resolver) { try { T result = resolver.get(); return Optional.ofNullable(result); - } - catch (NullPointerException e) { + } catch (NullPointerException e) { return Optional.empty(); } } private static void test3() { Outer outer = new Outer(); - resolve(() -> outer.getNested().getInner().getFoo()) - .ifPresent(System.out::println); + resolve(() -> outer.getNested().getInner().getFoo()).ifPresent(System.out::println); } private static void test2() { Optional.of(new Outer()) - .map(Outer::getNested) - .map(Nested::getInner) - .map(Inner::getFoo) - .ifPresent(System.out::println); + .map(Outer::getNested).map(Nested::getInner) + .map(Inner::getFoo).ifPresent(System.out::println); } private static void test1() { From b11365d7572d2d1e603f47de7a4d964c75bd5ac8 Mon Sep 17 00:00:00 2001 From: Beck Date: Mon, 8 May 2017 10:28:21 +0800 Subject: [PATCH 18/19] note --- .../{stream => optionals}/Optional1.java | 2 +- .../{stream => optionals}/Optional2.java | 2 +- .../java8/samples/stream/Streams1.java | 9 +- .../java8/samples/stream/Streams2.java | 4 - .../java8/samples/stream/Streams3.java | 29 ++-- .../java8/samples/stream/Streams4.java | 30 ++-- .../java8/samples/stream/Streams5.java | 136 +++++++++--------- .../java8/samples/time/LocalDate1.java | 34 ++--- .../java8/samples/time/LocalDateTime1.java | 34 ++--- .../java8/samples/time/LocalTime1.java | 64 ++++----- 10 files changed, 169 insertions(+), 175 deletions(-) rename src/main/java/com/winterbe/java8/samples/{stream => optionals}/Optional1.java (93%) rename src/main/java/com/winterbe/java8/samples/{stream => optionals}/Optional2.java (97%) diff --git a/src/main/java/com/winterbe/java8/samples/stream/Optional1.java b/src/main/java/com/winterbe/java8/samples/optionals/Optional1.java similarity index 93% rename from src/main/java/com/winterbe/java8/samples/stream/Optional1.java rename to src/main/java/com/winterbe/java8/samples/optionals/Optional1.java index 74e1a1db..a9cd592e 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Optional1.java +++ b/src/main/java/com/winterbe/java8/samples/optionals/Optional1.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.stream; +package com.winterbe.java8.samples.optionals; import java.util.Optional; diff --git a/src/main/java/com/winterbe/java8/samples/stream/Optional2.java b/src/main/java/com/winterbe/java8/samples/optionals/Optional2.java similarity index 97% rename from src/main/java/com/winterbe/java8/samples/stream/Optional2.java rename to src/main/java/com/winterbe/java8/samples/optionals/Optional2.java index 96b939f3..48b595c5 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Optional2.java +++ b/src/main/java/com/winterbe/java8/samples/optionals/Optional2.java @@ -1,4 +1,4 @@ -package com.winterbe.java8.samples.stream; +package com.winterbe.java8.samples.optionals; import java.util.Optional; import java.util.function.Supplier; diff --git a/src/main/java/com/winterbe/java8/samples/stream/Streams1.java b/src/main/java/com/winterbe/java8/samples/stream/Streams1.java index 8f438da4..7e5d198d 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Streams1.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Streams1.java @@ -23,7 +23,7 @@ public static void main(String[] args) { // filtering - + System.out.println("\ncollection.stream.sorted.filter.foreach"); stringCollection .stream() .filter((s) -> s.startsWith("a")) @@ -33,7 +33,7 @@ public static void main(String[] args) { // sorting - + System.out.println("\ncollection.stream.sorted.filter.foreach"); stringCollection .stream() .sorted() @@ -42,9 +42,8 @@ public static void main(String[] args) { // "aaa1", "aaa2" - + System.out.println("\ncollection.stream.map.sorted.foreach"); // mapping - stringCollection .stream() .map(String::toUpperCase) @@ -96,7 +95,5 @@ public static void main(String[] args) { reduced.ifPresent(System.out::println); // "aaa1#aaa2#bbb1#bbb2#bbb3#ccc#ddd1#ddd2" - } - } diff --git a/src/main/java/com/winterbe/java8/samples/stream/Streams2.java b/src/main/java/com/winterbe/java8/samples/stream/Streams2.java index 2569f500..a791927c 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Streams2.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Streams2.java @@ -20,9 +20,7 @@ public static void main(String[] args) { stringCollection.add("bbb2"); stringCollection.add("ddd1"); - // sorting - stringCollection .stream() .sorted() @@ -30,8 +28,6 @@ public static void main(String[] args) { System.out.println(stringCollection); - - } } diff --git a/src/main/java/com/winterbe/java8/samples/stream/Streams3.java b/src/main/java/com/winterbe/java8/samples/stream/Streams3.java index 694f6ddc..328cc0bc 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Streams3.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Streams3.java @@ -13,45 +13,40 @@ public class Streams3 { public static final int MAX = 1000000; public static void sortSequential() { - List values = new ArrayList<>(MAX); - for (int i = 0; i < MAX; i++) { - UUID uuid = UUID.randomUUID(); - values.add(uuid.toString()); - } + List values = getStrings(); // sequential - long t0 = System.nanoTime(); - long count = values.stream().sorted().count(); System.out.println(count); long t1 = System.nanoTime(); - long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0); System.out.println(String.format("sequential sort took: %d ms", millis)); } public static void sortParallel() { - List values = new ArrayList<>(MAX); - for (int i = 0; i < MAX; i++) { - UUID uuid = UUID.randomUUID(); - values.add(uuid.toString()); - } - - // sequential + List values = getStrings(); + // Parallel long t0 = System.nanoTime(); - long count = values.parallelStream().sorted().count(); System.out.println(count); long t1 = System.nanoTime(); - long millis = TimeUnit.NANOSECONDS.toMillis(t1 - t0); System.out.println(String.format("parallel sort took: %d ms", millis)); } + private static List getStrings() { + List values = new ArrayList<>(MAX); + for (int i = 0; i < MAX; i++) { + UUID uuid = UUID.randomUUID(); + values.add(uuid.toString()); + } + return values; + } + public static void main(String[] args) { sortSequential(); sortParallel(); diff --git a/src/main/java/com/winterbe/java8/samples/stream/Streams4.java b/src/main/java/com/winterbe/java8/samples/stream/Streams4.java index 78bf6f58..c6572cb0 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Streams4.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Streams4.java @@ -9,29 +9,33 @@ public class Streams4 { public static void main(String[] args) { + + outprint("\nfor:"); for (int i = 0; i < 10; i++) { if (i % 2 == 1) { System.out.println(i); } } - IntStream.range(0, 10) - .forEach(i -> { - if (i % 2 == 1) System.out.println(i); - }); + outprint("\nforeach:"); + IntStream.range(0, 10).forEach(i -> { + if (i % 2 == 1) System.out.println(i); + }); - IntStream.range(0, 10) - .filter(i -> i % 2 == 1) - .forEach(System.out::println); + outprint("\nforeach2:"); + IntStream.range(0, 10).filter(i -> i % 2 == 1).forEach(System.out::println); - OptionalInt reduced1 = - IntStream.range(0, 10) - .reduce((a, b) -> a + b); + outprint("\nreduce:"); + OptionalInt reduced1 = IntStream.range(0, 10).reduce((a, b) -> a + b); System.out.println(reduced1.getAsInt()); - int reduced2 = - IntStream.range(0, 10) - .reduce(7, (a, b) -> a + b); + outprint("\nreduce2:"); + int reduced2 = IntStream.range(0, 10).reduce(6, (a, b) -> a + b); System.out.println(reduced2); } + + private static void outprint(String message) { + System.out.println(message); + } + } diff --git a/src/main/java/com/winterbe/java8/samples/stream/Streams5.java b/src/main/java/com/winterbe/java8/samples/stream/Streams5.java index 560becf9..d595efd3 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Streams5.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Streams5.java @@ -13,8 +13,7 @@ public class Streams5 { public static void main(String[] args) { - List strings = - Arrays.asList("d2", "a2", "b1", "b3", "c"); + List strings = Arrays.asList("d2", "a2", "b1", "b3", "c"); // test1(strings); // test2(strings); @@ -27,8 +26,7 @@ public static void main(String[] args) { } private static void test8(List stringCollection) { - Supplier> streamSupplier = - () -> stringCollection + Supplier> streamSupplier = () -> stringCollection .stream() .filter(s -> s.startsWith("a")); @@ -39,8 +37,8 @@ private static void test8(List stringCollection) { // stream has already been operated upon or closed private static void test7(List stringCollection) { Stream stream = stringCollection - .stream() - .filter(s -> s.startsWith("a")); + .stream() + .filter(s -> s.startsWith("a")); stream.anyMatch(s -> true); stream.noneMatch(s -> true); @@ -49,90 +47,90 @@ private static void test7(List stringCollection) { // short-circuit private static void test6(List stringCollection) { stringCollection - .stream() - .map(s -> { - System.out.println("map: " + s); - return s.toUpperCase(); - }) - .anyMatch(s -> { - System.out.println("anyMatch: " + s); - return s.startsWith("A"); - }); + .stream() + .map(s -> { + System.out.println("map: " + s); + return s.toUpperCase(); + }) + .anyMatch(s -> { + System.out.println("anyMatch: " + s); + return s.startsWith("A"); + }); } private static void test5(List stringCollection) { stringCollection - .stream() - .filter(s -> { - System.out.println("filter: " + s); - return s.toLowerCase().startsWith("a"); - }) - .sorted((s1, s2) -> { - System.out.printf("sort: %s; %s\n", s1, s2); - return s1.compareTo(s2); - }) - .map(s -> { - System.out.println("map: " + s); - return s.toUpperCase(); - }) - .forEach(s -> System.out.println("forEach: " + s)); + .stream() + .filter(s -> { + System.out.println("filter: " + s); + return s.toLowerCase().startsWith("a"); + }) + .sorted((s1, s2) -> { + System.out.printf("sort: %s; %s\n", s1, s2); + return s1.compareTo(s2); + }) + .map(s -> { + System.out.println("map: " + s); + return s.toUpperCase(); + }) + .forEach(s -> System.out.println("forEach: " + s)); } // sorted = horizontal private static void test4(List stringCollection) { stringCollection - .stream() - .sorted((s1, s2) -> { - System.out.printf("sort: %s; %s\n", s1, s2); - return s1.compareTo(s2); - }) - .filter(s -> { - System.out.println("filter: " + s); - return s.toLowerCase().startsWith("a"); - }) - .map(s -> { - System.out.println("map: " + s); - return s.toUpperCase(); - }) - .forEach(s -> System.out.println("forEach: " + s)); + .stream() + .sorted((s1, s2) -> { + System.out.printf("sort: %s; %s\n", s1, s2); + return s1.compareTo(s2); + }) + .filter(s -> { + System.out.println("filter: " + s); + return s.toLowerCase().startsWith("a"); + }) + .map(s -> { + System.out.println("map: " + s); + return s.toUpperCase(); + }) + .forEach(s -> System.out.println("forEach: " + s)); } private static void test3(List stringCollection) { stringCollection - .stream() - .filter(s -> { - System.out.println("filter: " + s); - return s.startsWith("a"); - }) - .map(s -> { - System.out.println("map: " + s); - return s.toUpperCase(); - }) - .forEach(s -> System.out.println("forEach: " + s)); + .stream() + .filter(s -> { + System.out.println("filter: " + s); + return s.startsWith("a"); + }) + .map(s -> { + System.out.println("map: " + s); + return s.toUpperCase(); + }) + .forEach(s -> System.out.println("forEach: " + s)); } private static void test2(List stringCollection) { stringCollection - .stream() - .map(s -> { - System.out.println("map: " + s); - return s.toUpperCase(); - }) - .filter(s -> { - System.out.println("filter: " + s); - return s.startsWith("A"); - }) - .forEach(s -> System.out.println("forEach: " + s)); + .stream() + .map(s -> { + System.out.println("map: " + s); + return s.toUpperCase(); + }) + .filter(s -> { + System.out.println("filter: " + s); + return s.startsWith("A"); + }) + .forEach(s -> System.out.println("forEach: " + s)); } private static void test1(List stringCollection) { stringCollection - .stream() - .filter(s -> { - System.out.println("filter: " + s); - return true; - }) - .forEach(s -> System.out.println("forEach: " + s)); + .stream() + .filter(s -> { + System.out.println("filter: " + s); + return true; + }) + .forEach(s -> System.out.println("forEach: " + s)); } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java b/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java index 41e4e2c8..d81e1268 100644 --- a/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java +++ b/src/main/java/com/winterbe/java8/samples/time/LocalDate1.java @@ -2,6 +2,7 @@ import java.time.DayOfWeek; import java.time.LocalDate; +import java.time.LocalTime; import java.time.Month; import java.time.format.DateTimeFormatter; import java.time.format.FormatStyle; @@ -13,21 +14,22 @@ */ public class LocalDate1 { - public static void main(String[] args) { - LocalDate today = LocalDate.now(); - LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); - LocalDate yesterday = tomorrow.minusDays(2); + public static void main(String[] args) { - System.out.println(today); - System.out.println(tomorrow); - System.out.println(yesterday); + LocalDate today = LocalDate.now(); + LocalDate tomorrow = today.plus(1, ChronoUnit.DAYS); + LocalDate yesterday = tomorrow.minusDays(2); - LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); - DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); - System.out.println(dayOfWeek); // FRIDAY - - DateTimeFormatter germanFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.GERMAN); - LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); - System.out.println(xmas); // 2014-12-24 - } -} \ No newline at end of file + System.out.println("today : "+today); + System.out.println(tomorrow); + System.out.println(yesterday); + + LocalDate independenceDay = LocalDate.of(2014, Month.JULY, 4); + DayOfWeek dayOfWeek = independenceDay.getDayOfWeek(); + System.out.println("day of week : " + dayOfWeek); // FRIDAY + + DateTimeFormatter germanFormatter = DateTimeFormatter.ofLocalizedDate(FormatStyle.MEDIUM).withLocale(Locale.GERMAN); + LocalDate xmas = LocalDate.parse("24.12.2014", germanFormatter); + System.out.println(xmas); // 2014-12-24 + } +} diff --git a/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java b/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java index 0f33c553..687acd13 100644 --- a/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java +++ b/src/main/java/com/winterbe/java8/samples/time/LocalDateTime1.java @@ -14,29 +14,31 @@ */ public class LocalDateTime1 { - public static void main(String[] args) { + public static void main(String[] args) { - LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); + LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); - DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); - System.out.println(dayOfWeek); // WEDNESDAY + DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); + System.out.println(dayOfWeek); // WEDNESDAY - Month month = sylvester.getMonth(); - System.out.println(month); // DECEMBER + Month month = sylvester.getMonth(); + System.out.println(month); // DECEMBER - long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); - System.out.println(minuteOfDay); // 1439 + long minuteOfDay = sylvester.getLong(ChronoField.MINUTE_OF_DAY); + System.out.println(minuteOfDay); // 1439 - Instant instant = sylvester.atZone(ZoneId.systemDefault()).toInstant(); + Instant instant = sylvester.atZone(ZoneId.systemDefault()).toInstant(); - Date legacyDate = Date.from(instant); - System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014 + Date legacyDate = Date.from(instant); + System.out.println(legacyDate); // Wed Dec 31 23:59:59 CET 2014 - DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy - HH:mm"); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("MMM dd, yyyy - HH:mm"); - LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); - String string = parsed.format(formatter); - System.out.println(string); // Nov 03, 2014 - 07:13 - } +// LocalDateTime parsed = LocalDateTime.parse("Nov 03, 2014 - 07:13", formatter); +// String string = parsed.format(formatter); +// System.out.println(string); // Nov 03, 2014 - 07:13 + + System.out.println(LocalDateTime.now()); + } } \ No newline at end of file diff --git a/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java b/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java index 803c78cc..6df68317 100644 --- a/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java +++ b/src/main/java/com/winterbe/java8/samples/time/LocalTime1.java @@ -15,50 +15,50 @@ */ public class LocalTime1 { - public static void main(String[] args) { + public static void main(String[] args) { - // get the current time - Clock clock = Clock.systemDefaultZone(); - long t0 = clock.millis(); - System.out.println(t0); + // get the current time + Clock clock = Clock.systemDefaultZone(); + long t0 = clock.millis(); + System.out.println(t0); - Instant instant = clock.instant(); - Date legacyDate = Date.from(instant); - System.out.println(legacyDate); + Instant instant = clock.instant(); + Date legacyDate = Date.from(instant); + System.out.println(legacyDate); - ZoneId zone1 = ZoneId.of("Europe/Berlin"); - ZoneId zone2 = ZoneId.of("Brazil/East"); + ZoneId zone1 = ZoneId.of("Europe/Berlin"); + ZoneId zone2 = ZoneId.of("Brazil/East"); - System.out.println(zone1.getRules()); - System.out.println(zone2.getRules()); + System.out.println(zone1.getRules()); + System.out.println(zone2.getRules()); - // time - LocalTime now1 = LocalTime.now(zone1); - LocalTime now2 = LocalTime.now(zone2); + // time + LocalTime now1 = LocalTime.now(zone1); + LocalTime now2 = LocalTime.now(zone2); - System.out.println(now1); - System.out.println(now2); + System.out.println(now1); + System.out.println(now2); - System.out.println(now1.isBefore(now2)); // false + System.out.println(now1.isBefore(now2)); // false - long hoursBetween = ChronoUnit.HOURS.between(now1, now2); - long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); - System.out.println(hoursBetween); - System.out.println(minutesBetween); + long hoursBetween = ChronoUnit.HOURS.between(now1, now2); + long minutesBetween = ChronoUnit.MINUTES.between(now1, now2); + System.out.println("hour between ="+hoursBetween); + System.out.println(minutesBetween); - // create time + // create time - LocalTime now = LocalTime.now(); - System.out.println(now); + LocalTime now = LocalTime.now(); + System.out.println("localTime.now()=" + now); - LocalTime late = LocalTime.of(23, 59, 59); - System.out.println(late); + LocalTime late = LocalTime.of(23, 59, 59); + System.out.println("localTime.of(23,59,59) = " + late); - DateTimeFormatter germanFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).withLocale(Locale.GERMAN); + DateTimeFormatter germanFormatter = DateTimeFormatter.ofLocalizedTime(FormatStyle.SHORT).withLocale(Locale.GERMAN); - LocalTime leetTime = LocalTime.parse("13:37", germanFormatter); - System.out.println(leetTime); + LocalTime leetTime = LocalTime.parse("13:37", germanFormatter); + System.out.println("localTime.parse = " + leetTime); - // to legacy date - } + // to legacy date + } } \ No newline at end of file From 15db2d018bfd3402e01b6f5327f896d0ec03dc4c Mon Sep 17 00:00:00 2001 From: Beck Date: Mon, 8 May 2017 10:29:33 +0800 Subject: [PATCH 19/19] note --- src/main/java/com/winterbe/java8/samples/stream/Streams2.java | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/java/com/winterbe/java8/samples/stream/Streams2.java b/src/main/java/com/winterbe/java8/samples/stream/Streams2.java index a791927c..faea6fc8 100644 --- a/src/main/java/com/winterbe/java8/samples/stream/Streams2.java +++ b/src/main/java/com/winterbe/java8/samples/stream/Streams2.java @@ -27,7 +27,5 @@ public static void main(String[] args) { .forEach(System.out::println); System.out.println(stringCollection); - } - }