diff --git a/res/nashorn1.js b/res/nashorn1.js deleted file mode 100644 index b342405f..00000000 --- a/res/nashorn1.js +++ /dev/null @@ -1,8 +0,0 @@ -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)); -}; \ No newline at end of file diff --git a/res/nashorn10.js b/res/nashorn10.js deleted file mode 100644 index 9c572d5c..00000000 --- a/res/nashorn10.js +++ /dev/null @@ -1,29 +0,0 @@ -var results = []; - -var Context = function () { - this.foo = 'bar'; -}; - -Context.prototype.testArgs = function () { - if (arguments[0]) { - results.push(true); - } - if (arguments[1]) { - results.push(true); - } - if (arguments[2]) { - results.push(true); - } - if (arguments[3]) { - results.push(true); - } -}; - -var testPerf = function () { - var context = new Context(); - context.testArgs(); - context.testArgs(1); - context.testArgs(1, 2); - context.testArgs(1, 2, 3); - context.testArgs(1, 2, 3, 4); -}; \ No newline at end of file diff --git a/res/nashorn2.js b/res/nashorn2.js deleted file mode 100644 index 32bdd0f6..00000000 --- a/res/nashorn2.js +++ /dev/null @@ -1,35 +0,0 @@ -var Nashorn2 = Java.type('com.winterbe.java8.samples.nashorn.Nashorn2'); -var result = Nashorn2.fun('John Doe'); -print('\n' + result); - -Nashorn2.fun2(123); -Nashorn2.fun2(49.99); -Nashorn2.fun2(true); -Nashorn2.fun2("hi there") -Nashorn2.fun2(String("bam")) -Nashorn2.fun2(new Number(23)); -Nashorn2.fun2(new Date()); -Nashorn2.fun2(new RegExp()); -Nashorn2.fun2({foo: 'bar'}); - - -print('passing object hash:'); -Nashorn2.fun3({ - foo: 'bar', - bar: 'foo' -}); - - -print('passing custom person object:'); - -function Person(firstName, lastName) { - this.firstName = firstName; - this.lastName = lastName; - this.getFullName = function() { - return this.firstName + " " + this.lastName; - } -} - -var person1 = new Person("Peter", "Parker"); -Nashorn2.fun3(person1); -Nashorn2.fun4(person1); \ No newline at end of file diff --git a/res/nashorn3.js b/res/nashorn3.js deleted file mode 100644 index c58114e7..00000000 --- a/res/nashorn3.js +++ /dev/null @@ -1,121 +0,0 @@ -print('------------------'); -print('IntArray:'); - -var IntArray = Java.type('int[]'); - -var array = new IntArray(5); -array[0] = 5; -array[1] = 4; -array[2] = 3; -array[3] = 2; -array[4] = 1; - -try { - array[5] = 23; -} catch (e) { - print(e.message); -} - -array[0] = "17"; -print(array[0]); - -array[0] = "wrong type"; -print(array[0]); - -array[0] = "17.3"; -print(array[0]); - -print('------------------'); - -for (var i in array) print(i); - -print('------------------'); - -for each (var val in array) print(val); - -print('------------------'); -print('ArrayList:'); - -var ArrayList = Java.type('java.util.ArrayList'); - -var list = new ArrayList(); -list.add('a'); -list.add('b'); -list.add('c'); - -for each (var el in list) print(el); - - -print('------------------'); -print('HashMap:'); - -var HashMap = Java.type('java.util.HashMap'); - -var map = new HashMap(); -map.put('foo', 'foo1'); -map.put('bar', 'bar1'); - -for each(var e in map.keySet()) print(e); - -for each(var e in map.values()) print(e); - - -print('------------------'); -print('Streams:'); - -var list2 = new ArrayList(); -list2.add("ddd2"); -list2.add("aaa2"); -list2.add("bbb1"); -list2.add("aaa1"); -list2.add("bbb3"); -list2.add("ccc"); -list2.add("bbb2"); -list2.add("ddd1"); - -list2 - .stream() - .filter(function(el) { - return el.startsWith("aaa"); - }) - .sorted() - .forEach(function(el) { - print(el); - }); - - - -print('------------------'); -print('Extend:'); - -var Runnable = Java.type('java.lang.Runnable'); -var Printer = Java.extend(Runnable, { - run: function() { - print('This was printed from a seperate thread.'); - } -}); - -var Thread = Java.type('java.lang.Thread'); -new Thread(new Printer()).start(); - -new Thread(function() { - print('this was printed from another thread'); -}).start(); - - -print('------------------'); -print('Parameter Overload:'); - -var System = Java.type('java.lang.System'); - -System.out.println(10); -System.out["println"](11.0); -System.out["println(double)"](12); - -print('------------------'); -print('JavaBeans:'); - -var Date = Java.type('java.util.Date'); -var date = new Date(); -date.year += 1900; -System.out.println(date.year); \ No newline at end of file diff --git a/res/nashorn4.js b/res/nashorn4.js deleted file mode 100644 index 461ebca4..00000000 --- a/res/nashorn4.js +++ /dev/null @@ -1,98 +0,0 @@ -// function literal with no braces - -function sqr(x) x * x; - -print(sqr(3)); - - -// for each - -var array = [1, 2, 3, 4]; -for each (var num in array) print(num); - - -// object literals in constructors - -var runnable = new java.lang.Runnable() { - run: function() { - print('on the run'); - } -}; - -runnable.run(); - - -// bind properties - -var o1 = {}; -var o2 = { foo: 'bar'}; - -Object.bindProperties(o1, o2); - -print(o1.foo); -o1.foo = 'BAM'; -print(o2.foo); - - -// string trim - -print(" hehe".trimLeft()); -print("hehe ".trimRight() + "he"); - - -// whereis -print(__FILE__, __LINE__, __DIR__); - - -// java import - -var imports = new JavaImporter(java.io, java.lang); -with (imports) { - var file = new File(__FILE__); - System.out.println(file.getAbsolutePath()); - // /path/to/my/script.js -} - - -// convert iterable to js array - -var list = new java.util.ArrayList(); -list.add("s1"); -list.add("s2"); -list.add("s3"); - -var jsArray = Java.from(list); -print(jsArray); -print(Object.prototype.toString.call(jsArray)); - - -// convert js array to java array - -var javaArray = Java.to([3, 5, 7, 11], "int[]"); -print(Object.prototype.toString.call(javaArray)); - - -// calling super - -var SuperRunner = Java.type('com.winterbe.java8.samples.nashorn.SuperRunner'); -var Runner = Java.extend(SuperRunner); - -var runner = new Runner() { - run: function() { - Java.super(runner).run(); - print('on my run'); - } -} -runner.run(); - - - -// load - -load('http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js'); - -var odds = _.filter([1, 2, 3, 4, 5, 6], function (num) { - return num % 2 == 1; -}); - -print(odds); \ No newline at end of file diff --git a/res/nashorn5.js b/res/nashorn5.js deleted file mode 100644 index f7d01768..00000000 --- a/res/nashorn5.js +++ /dev/null @@ -1,22 +0,0 @@ -function Product(name) { - this.name = name; -} - -Product.prototype.stock = 0; -Product.prototype.price = 0; -Product.prototype.getValueOfGoods = function() { - return this.stock * this.price; -}; - -var product = new Product('Pencil'); -product.price = 4.99; -product.stock = 78; - -print('Value of Goods: ' + product.getValueOfGoods()); - - -var getValueOfGoods = function(javaProduct) { - var jsProduct = new Product(); - Object.bindProperties(jsProduct, javaProduct); - return jsProduct.getValueOfGoods(); -}; \ No newline at end of file diff --git a/res/nashorn6.js b/res/nashorn6.js deleted file mode 100644 index f4bae9a5..00000000 --- a/res/nashorn6.js +++ /dev/null @@ -1,47 +0,0 @@ -load('http://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.6.0/underscore-min.js'); -load('http://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.2/backbone-min.js'); - - -// simple backbone model: -// valueOfGoods will automatically be calculated when stock or price changes -var Product = Backbone.Model.extend({ - defaults: { - stock: 0, - price: 0.0, - name:'', - valueOfGoods: 0.0 - }, - - initialize: function() { - this.on('change:stock change:price', function() { - var stock = this.get('stock'); - var price = this.get('price'); - var valueOfGoods = this.getValueOfGoods(stock, price); - this.set('valueOfGoods', valueOfGoods); - }); - }, - - getValueOfGoods: function(stock, price) { - return stock * price; - } -}); - -var product = new Product(); -product.set('name', 'Pencil'); -product.set('stock', 1000); -product.set('price', 3.99); - - -// pass backbone model to java method -var Nashorn6 = Java.type('com.winterbe.java8.samples.nashorn.Nashorn6'); -Nashorn6.getProduct(product.attributes); - - -// bind java object to backbone model and pass result back to java -var calculate = function(javaProduct) { - var model = new Product(); - model.set('name', javaProduct.name); - model.set('price', javaProduct.price); - model.set('stock', javaProduct.stock); - return model.attributes; -}; \ No newline at end of file diff --git a/res/nashorn7.js b/res/nashorn7.js deleted file mode 100644 index 9246f163..00000000 --- a/res/nashorn7.js +++ /dev/null @@ -1,27 +0,0 @@ -function sqrt(x) x * x -print(sqrt(3)); - -var array = [1, 2, 3, 4]; -for each (var num in array) print(num); - -var runnable = new java.lang.Runnable() { - run: function () { - print('on the run'); - } -}; - -runnable.run(); - -var System = Java.type('java.lang.System'); -System.out["println(double)"](12); - -var Arrays = Java.type("java.util.Arrays"); -var javaArray = Java.to([2, 3, 7, 11, 14], "int[]"); - -Arrays.stream(javaArray) - .filter(function (num) { - return num % 2 === 1; - }) - .forEach(function (num) { - print(num); - }); \ No newline at end of file diff --git a/res/nashorn8.js b/res/nashorn8.js deleted file mode 100644 index d7bb6a67..00000000 --- a/res/nashorn8.js +++ /dev/null @@ -1,18 +0,0 @@ -var evaluate1 = function () { - (function () { - print(eval("this")); - }).call(this); -}; - -var evaluate2 = function () { - var context = {}; - (function () { - print(eval("this")); - }).call(context); -}; - -var evaluate3 = function (context) { - (function () { - print(eval("this")); - }).call(context); -}; \ No newline at end of file diff --git a/res/nashorn9.js b/res/nashorn9.js deleted file mode 100644 index e60e2b06..00000000 --- a/res/nashorn9.js +++ /dev/null @@ -1,9 +0,0 @@ -var size = 100000; - -var testPerf = function () { - var result = Math.floor(Math.random() * size) + 1; - for (var i = 0; i < size; i++) { - result += i; - } - return result; -}; \ No newline at end of file diff --git a/src/com/winterbe/java8/samples/concurrent/LongAccumulator1.java b/src/com/winterbe/java8/samples/concurrent/LongAccumulator1.java index fa000a1b..9bd81e42 100644 --- a/src/com/winterbe/java8/samples/concurrent/LongAccumulator1.java +++ b/src/com/winterbe/java8/samples/concurrent/LongAccumulator1.java @@ -16,9 +16,8 @@ public static void main(String[] args) { } private static void testAccumulate() { - LongBinaryOperator op = (x, y) -> 2 * x + y; - LongAccumulator accumulator = new LongAccumulator(op, 1L); - + LongBinaryOperator op = (x, y) -> 2 * x + y;//定义一个二元操作 + LongAccumulator accumulator = new LongAccumulator(op, 1L);//生成新二元操作对象的累加方法,初始值为1 ExecutorService executor = Executors.newFixedThreadPool(2); IntStream.range(0, 10) diff --git a/src/com/winterbe/java8/samples/concurrent/LongAdder1.java b/src/com/winterbe/java8/samples/concurrent/LongAdder1.java index 98cb1843..1f2181b9 100644 --- a/src/com/winterbe/java8/samples/concurrent/LongAdder1.java +++ b/src/com/winterbe/java8/samples/concurrent/LongAdder1.java @@ -12,7 +12,7 @@ public class LongAdder1 { private static final int NUM_INCREMENTS = 10000; - private static LongAdder adder = new LongAdder(); + private static LongAdder adder = new LongAdder();//JAVA8的原子对象 public static void main(String[] args) { testIncrement(); diff --git a/src/com/winterbe/java8/samples/lambda/Lambda1.java b/src/com/winterbe/java8/samples/lambda/Lambda1.java index 5bb5b658..66b2c678 100644 --- a/src/com/winterbe/java8/samples/lambda/Lambda1.java +++ b/src/com/winterbe/java8/samples/lambda/Lambda1.java @@ -37,7 +37,7 @@ public int compare(String a, String b) { List names2 = Arrays.asList("peter", null, "anna", "mike", "xenia"); names2.sort(Comparator.nullsLast(String::compareTo)); - System.out.println(names2); + System.out.println("nulllast"+names2); List names3 = null; diff --git a/src/com/winterbe/java8/samples/stream/Optional1.java b/src/com/winterbe/java8/samples/stream/Optional1.java index efd779e2..dc9eb303 100644 --- a/src/com/winterbe/java8/samples/stream/Optional1.java +++ b/src/com/winterbe/java8/samples/stream/Optional1.java @@ -1,5 +1,7 @@ package com.winterbe.java8.samples.stream; +import java.util.Arrays; +import java.util.List; import java.util.Optional; /** @@ -15,6 +17,9 @@ public static void main(String[] args) { optional.orElse("fallback"); // "bam" optional.ifPresent((s) -> System.out.println(s.charAt(0))); // "b" + + List alist= Arrays.asList("abc","cba",null,"aaa"); + System.out.println (alist.stream().anyMatch(m->{return "abc".equals(m);})); } } \ No newline at end of file diff --git a/src/com/winterbe/java8/samples/stream/Streams10.java b/src/com/winterbe/java8/samples/stream/Streams10.java index 22483248..b415c5c9 100644 --- a/src/com/winterbe/java8/samples/stream/Streams10.java +++ b/src/com/winterbe/java8/samples/stream/Streams10.java @@ -34,17 +34,18 @@ public static void main(String[] args) { new Person("Max", 18), new Person("Peter", 23), new Person("Pamela", 23), + new Person("Pame22la", 23), new Person("David", 12)); // test1(persons); // test2(persons); // test3(persons); // test4(persons); -// test5(persons); + test5(persons); // test6(persons); // test7(persons); // test8(persons); - test9(persons); +// test9(persons); } private static void test1(List persons) { diff --git a/src/com/winterbe/java8/samples/stream/Streams11.java b/src/com/winterbe/java8/samples/stream/Streams11.java index 8ded3978..e415f320 100644 --- a/src/com/winterbe/java8/samples/stream/Streams11.java +++ b/src/com/winterbe/java8/samples/stream/Streams11.java @@ -19,7 +19,10 @@ static class Person { @Override public String toString() { - return name; + return "Person{" + + "name='" + name + '\'' + + ", age=" + age + + '}'; } } diff --git a/src/com/winterbe/java8/samples/time/LocalDateTime1.java b/src/com/winterbe/java8/samples/time/LocalDateTime1.java index 78134f5d..2d586d2e 100644 --- a/src/com/winterbe/java8/samples/time/LocalDateTime1.java +++ b/src/com/winterbe/java8/samples/time/LocalDateTime1.java @@ -1,10 +1,6 @@ package com.winterbe.java8.samples.time; -import java.time.DayOfWeek; -import java.time.Instant; -import java.time.LocalDateTime; -import java.time.Month; -import java.time.ZoneId; +import java.time.*; import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoField; import java.util.Date; @@ -16,7 +12,12 @@ public class LocalDateTime1 { public static void main(String[] args) { + LocalDateTime sylvester = LocalDateTime.of(2014, Month.DECEMBER, 31, 23, 59, 59); + LocalDateTime now = LocalDateTime.now(); + + Duration bt=Duration.between(sylvester,now); + System.out.println(now.plus(bt)); DayOfWeek dayOfWeek = sylvester.getDayOfWeek(); System.out.println(dayOfWeek); // WEDNESDAY