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/lambda/Interface1.java b/src/com/winterbe/java8/samples/lambda/Interface1.java deleted file mode 100644 index 6a87fc10..00000000 --- a/src/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/com/winterbe/java8/samples/lambda/Lambda2.java b/src/com/winterbe/java8/samples/lambda/Lambda2.java deleted file mode 100644 index 71e25ec7..00000000 --- a/src/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/com/winterbe/java8/samples/lambda/Lambda3.java b/src/com/winterbe/java8/samples/lambda/Lambda3.java deleted file mode 100644 index 967f3493..00000000 --- a/src/com/winterbe/java8/samples/lambda/Lambda3.java +++ /dev/null @@ -1,84 +0,0 @@ -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; - Predicate isNull = Objects::isNull; - - Predicate isEmpty = String::isEmpty; - Predicate isNotEmpty = isEmpty.negate(); - - - // 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(); - } - -} diff --git a/src/com/winterbe/java8/samples/lambda/Lambda4.java b/src/com/winterbe/java8/samples/lambda/Lambda4.java deleted file mode 100644 index e14b4b29..00000000 --- a/src/com/winterbe/java8/samples/lambda/Lambda4.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -/** - * @author Benjamin Winterberg - */ -public class Lambda4 { - - static int outerStaticNum; - - int outerNum; - - void testScopes() { - int num = 1; - - Lambda2.Converter stringConverter = - (from) -> String.valueOf(from + num); - - String convert = stringConverter.convert(2); - System.out.println(convert); // 3 - - Lambda2.Converter stringConverter2 = (from) -> { - outerNum = 13; - return String.valueOf(from); - }; - - String[] array = new String[1]; - Lambda2.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 diff --git a/src/com/winterbe/java8/samples/lambda/Person.java b/src/com/winterbe/java8/samples/lambda/Person.java deleted file mode 100644 index 800d39fd..00000000 --- a/src/com/winterbe/java8/samples/lambda/Person.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -/** -* @author Benjamin Winterberg -*/ -public class Person { - public String firstName; - public String lastName; - - public Person() {} - - public Person(String firstName, String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } -} \ No newline at end of file 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/Lambda1.java b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java similarity index 62% rename from src/com/winterbe/java8/samples/lambda/Lambda1.java rename to src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java index 5bb5b658..096f6c2b 100644 --- a/src/com/winterbe/java8/samples/lambda/Lambda1.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java @@ -9,41 +9,51 @@ /** * @author Benjamin Winterberg */ -public class Lambda1 { +public class ArraysLambda { 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)); - + 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 diff --git a/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java new file mode 100644 index 00000000..843f33fb --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java @@ -0,0 +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 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(); + } +} diff --git a/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java new file mode 100644 index 00000000..ce595f94 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java @@ -0,0 +1,44 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +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] + } +} 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/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 diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Person.java b/src/main/java/com/winterbe/java8/samples/lambda/Person.java new file mode 100644 index 00000000..92eb3fc6 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/Person.java @@ -0,0 +1,29 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +public class Person { + public String firstName; + public String lastName; + + 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(); + } + +} \ No newline at end of file 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
{ - 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/com/winterbe/java8/samples/lambda/Lambda3.java b/src/com/winterbe/java8/samples/lambda/Lambda3.java deleted file mode 100644 index 967f3493..00000000 --- a/src/com/winterbe/java8/samples/lambda/Lambda3.java +++ /dev/null @@ -1,84 +0,0 @@ -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; - Predicate isNull = Objects::isNull; - - Predicate isEmpty = String::isEmpty; - Predicate isNotEmpty = isEmpty.negate(); - - - // 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(); - } - -} diff --git a/src/com/winterbe/java8/samples/lambda/Lambda4.java b/src/com/winterbe/java8/samples/lambda/Lambda4.java deleted file mode 100644 index e14b4b29..00000000 --- a/src/com/winterbe/java8/samples/lambda/Lambda4.java +++ /dev/null @@ -1,41 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -/** - * @author Benjamin Winterberg - */ -public class Lambda4 { - - static int outerStaticNum; - - int outerNum; - - void testScopes() { - int num = 1; - - Lambda2.Converter stringConverter = - (from) -> String.valueOf(from + num); - - String convert = stringConverter.convert(2); - System.out.println(convert); // 3 - - Lambda2.Converter stringConverter2 = (from) -> { - outerNum = 13; - return String.valueOf(from); - }; - - String[] array = new String[1]; - Lambda2.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 diff --git a/src/com/winterbe/java8/samples/lambda/Person.java b/src/com/winterbe/java8/samples/lambda/Person.java deleted file mode 100644 index 800d39fd..00000000 --- a/src/com/winterbe/java8/samples/lambda/Person.java +++ /dev/null @@ -1,16 +0,0 @@ -package com.winterbe.java8.samples.lambda; - -/** -* @author Benjamin Winterberg -*/ -public class Person { - public String firstName; - public String lastName; - - public Person() {} - - public Person(String firstName, String lastName) { - this.firstName = firstName; - this.lastName = lastName; - } -} \ No newline at end of file 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/Lambda1.java b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java similarity index 62% rename from src/com/winterbe/java8/samples/lambda/Lambda1.java rename to src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java index 5bb5b658..096f6c2b 100644 --- a/src/com/winterbe/java8/samples/lambda/Lambda1.java +++ b/src/main/java/com/winterbe/java8/samples/lambda/ArraysLambda.java @@ -9,41 +9,51 @@ /** * @author Benjamin Winterberg */ -public class Lambda1 { +public class ArraysLambda { 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)); - + 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 diff --git a/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java new file mode 100644 index 00000000..843f33fb --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/CommonFunctions.java @@ -0,0 +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 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(); + } +} diff --git a/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java new file mode 100644 index 00000000..ce595f94 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/FunctionInterface.java @@ -0,0 +1,44 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +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] + } +} 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/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 diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Person.java b/src/main/java/com/winterbe/java8/samples/lambda/Person.java new file mode 100644 index 00000000..92eb3fc6 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/Person.java @@ -0,0 +1,29 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +public class Person { + public String firstName; + public String lastName; + + 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(); + } + +} \ No newline at end of file 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
{ + 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 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/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 diff --git a/src/main/java/com/winterbe/java8/samples/lambda/Person.java b/src/main/java/com/winterbe/java8/samples/lambda/Person.java new file mode 100644 index 00000000..92eb3fc6 --- /dev/null +++ b/src/main/java/com/winterbe/java8/samples/lambda/Person.java @@ -0,0 +1,29 @@ +package com.winterbe.java8.samples.lambda; + +/** + * @author Benjamin Winterberg + */ +public class Person { + public String firstName; + public String lastName; + + 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(); + } + +} \ No newline at end of file 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