公众号开发简单吗,广州网站seo优化排名,有没有专做水果网站,培训心得体会总结简短java 8 lambda在工作中#xff0c;我进行了有关Java 8项目lambda的演示#xff0c;当然还提供了一些简单的代码来说明一些要点。 Java 8的总体原因是#xff1a; 更简洁的代码#xff08;适用于只有一种方法和集合的类#xff09;。 “我们希望代码阅读者在到达lambda表达… java 8 lambda 在工作中我进行了有关Java 8项目lambda的演示当然还提供了一些简单的代码来说明一些要点。 Java 8的总体原因是 更简洁的代码适用于只有一种方法和集合的类。 “我们希望代码阅读者在到达lambda表达式的“实质”之前必须尽可能少地使用语法。” – Brian Goetzhttp://cr.openjdk.java.net/~briangoetz/lambda/lambda-state-4.html 能够传递功能而不仅仅是数据 更好地支持多核处理 所有示例都可以在从此处下载的以下Java 8版本上运行 openjdk version 1.8.0-ea
OpenJDK Runtime Environment (build 1.8.0-ea-lambda-nightly-h3876-20130403-b84-b00)
OpenJDK 64-Bit Server VM (build 25.0-b21, mixed mode)最简单的情况 public class ThreadA {public static void main(String[] args) {new Thread(new Runnable() {Overridepublic void run() {System.err.println(Hello from anonymous class);}}).start();}}public class ThreadB {public static void main(String[] args) {new Thread(() - {System.err.println(Hello from lambda);}).start();}} 非正式地注意语法 ()|x|(x,..,z) - expr|stmt 箭头是新的运算符。 并注意第二段代码与第一段代码相比更为简洁。 集合 首先让我介绍一个简单的领域和一些帮助者 public class Something {private double amount;public Something(double amount) {this.amount amount;}public double getAmount() {return amount;}public String toString() {return Amount: amount;}
}public class Helper {public static ListSomething someThings() {ListSomething things new ArrayList();things.add(new Something(99.9));things.add(new Something(199.9));things.add(new Something(299.9));things.add(new Something(399.9));things.add(new Something(1199.9));return things;}}public interface DoerT {void doSomething(T t);} 让我们对Java 7样式进行一些过滤和排序 public class CollectionA {public static void main(String... args) {ListSomething things Helper.someThings();System.err.println(Filter);ListSomething filtered filter(things);System.err.println(filtered);System.err.println(Sum);double sum sum(filtered);System.err.println(sum);}public static ListSomething filter(ListSomething things) {ListSomething filtered new ArrayList();for (Something s : things) {if (s.getAmount() 100.00) {if (s.getAmount() 1000.00) {filtered.add(s);}}}return filtered;}public static double sum(ListSomething things) {double d 0.0;for (Something s : things) {d s.getAmount();}return d;}} 现在是Java 8样式– 流式传输 import java.util.stream.Collectors;public class CollectionB {public static void main(String... args) {ListSomething things Helper.someThings();System.err.println(Filter lambda);ListSomething filtered things.stream().parallel().filter( t - t.getAmount() 100.00 t.getAmount() 1000.00).collect(Collectors.toList());System.err.println(filtered);System.err.println(Sum lambda);double sum filtered.stream().mapToDouble(t - t.getAmount()).sum();System.err.println(sum);}} 导入java.util.function。*接口和方法参考 public class CollectionC {public static void main(String... args) {ListSomething things Helper.someThings();System.err.println(Do something);doSomething(things, new DoerSomething() {Overridepublic void doSomething(Something t) {System.err.println(t);}});}public static void doSomething(ListSomething things, DoerSomething doer) {for (Something s : things) {doer.doSomething(s);}}} 将我们的Doer界面替换为标准的Consumer界面 以前称为Block import java.util.function.Consumer;public class CollectionD {public static void main(String... args) {ListSomething things Helper.someThings();System.err.println(Do something functional interfaces);consumeSomething(things, new ConsumerSomething() {Overridepublic void accept(Something t) {System.err.println(t);}});System.err.println(Do something functional interfaces, using lambda);consumeSomething(things, (t) - System.err.println(t));System.err.println(Do something functional interfaces, using lambda method reference (new operator ::) );consumeSomething(things, System.err::println);System.err.println(Do something functional interfaces, using stream);things.stream().forEach(new ConsumerSomething() {Overridepublic void accept(Something t) {System.err.println(t);}});System.err.println(Do something functional interfaces, using stream and method reference);things.stream().forEach(System.err::println);}public static void doSomething(ListSomething things, DoerSomething doer) {for (Something s : things) {doer.doSomething(s);}}public static void consumeSomething(ListSomething things, ConsumerSomething consumer) {for (Something s : things) {consumer.accept(s);}}} import java.util.List;
import java.util.NoSuchElementException;
import java.util.Optional;
import java.util.stream.Collectors;public class Various {public static void main(String... args) {ListSomething things Helper.someThings();//MapSystem.err.println(things.stream().map((Something t) - t.getAmount()).collect(Collectors.toList()));//Reducedouble d things.stream().reduce(new Something(0.0), (Something t, Something u) - new Something(t.getAmount() u.getAmount())).getAmount();System.err.println(d);//Reduce againSystem.err.println(things.stream().reduce((Something t, Something u) - new Something(t.getAmount() u.getAmount())).get());//Map/reduceSystem.err.println(things.stream().map((Something t) - t.getAmount()).reduce(0.0, (x, y) - x y));//LazyOptionalSomething findFirst things.stream().filter(t - t.getAmount() 1000).findFirst();System.err.println(findFirst.get());//Lazy no valueOptionalSomething findFirstNotThere things.stream().filter(t - t.getAmount() 2000).findFirst();try {System.err.println(findFirstNotThere.get());} catch (NoSuchElementException e) {System.err.println(Optional was not null, but its value was);}//Optional one step deeperthings.stream().filter(t - t.getAmount() 1000).findFirst().ifPresent(t - System.err.println(Here I am));}} 参考 Kim Saabye Pedersen的博客博客中的JCG合作伙伴 Kim Saabye Pedersen的Java 8 lambda演练 。 翻译自: https://www.javacodegeeks.com/2013/06/java-8-lambda-walkthrough.htmljava 8 lambda