???????
???????????????Trisha Gee??JavaOne 2016?????????Refactoring to Java 8??
????Java 8???????????????????????????JDK7?????????????????????δ??????£?????????????????????????????????????????Java 8????????????????Lambda????(lambda expression)????????????????????????????????Lambda????????????????????ú???????о???????£????嵽?????????Lambda??????????????μ????????????????Java??????????????????
??????????Lambda????
???????????????Lambda???????????????????????????Java 8?μ????????????????????????????????????
????????Lambda??????????????????????????д??
????new Thread(new Runnable(){
????@Override
????public void run(){
????System.out.println("Thread run()");
????}
????}).start();
??????Lambda????????????????д??
????new Thread(
????() -> System.out.println("Thread run()")
????).start();
???????????????????????????????????????????Lambda??????????????÷?????????Щ?????????????Lambda?????????ò???????
????Lambda?????????
????????Lambda??????????????????棺?????????????????????????????????庯??????????????????????????д???????С???????????????????Lambda??????????????invokedynamic?????????????????????????Lambda??????????????д?????“??????”????????????
????Runnable run = () -> System.out.println("Hello World");// 1
????ActionListener listener = event -> System.out.println("button clicked");// 2
????Runnable multiLine = () -> {// 3
????System.out.println("Hello ");
????System.out.println("World");
????};
????BinaryOperator<Long> add = (Long x?? Long y) -> x + y;// 4
????BinaryOperator<Long> addImplicit = (x?? y) -> x + y;// 5
???????????????????
????Lambda?????????????????????????????????Lambda????????????????????????????
????Lambda??????????????д????????????????????????????д????????????
????????????Lambda???????????????????????????2??5?????????????javac???????????????????????????????????????????????
??????????????????Lambda??????????????????????д???????????????????????????(Functional Interface)???????????????????Щ???????????????ν??????????????????????????????Java????????????????????????????????????????????????????????????????????????????????????????Lambda???????????????????????????
????Lambda??????Stream
????Lambda???????????????÷??????Stream?????á?Stream is a sequence of elements supporting sequential and parallel aggregate operations??Stream????????????У???????Щ?????и????????????Щ?????????Lambda???????????????Stream????Java Collection???????????????????????????????????????Stream????????????е????????????????????Stream??????÷???
????????1
??????????????????????б????????????????????????????Java 7?????????д??
????List<String> list = Arrays.asList("1one"?? "two"?? "three"?? "4four");
????for(String str : list){
????if(Character.isDigit(str.charAt(0))){
????System.out.println(str);
????}
????}
??????Java 8????????д??
????List<String> list = Arrays.asList("1one"?? "two"?? "three"?? "4four");
????list.stream()// 1.?????????Steam
????.filter(str -> Character.isDigit(str.charAt(0)))// 2.??????????????????
????.forEach(str -> System.out.println(str));// 3.????????
????????????????1. ????List.stream()?????????????Stream??2. ??????filter()??????????????????????????3. ?????forEach()????????????
???????Stream???????????????
???????????????????Lambda?????????????????????????????????????????
?????????????????Stream?????????????????JVM????????????????????????????е???????
????????2
??????????????????????б??У???????в????????????????????????????д???????????????μ??????С?Java 8??д????????£?
????List<String> list = Arrays.asList("1one"?? "two"?? "three"?? "4four");
????Set<String> newList =
????list.stream()// 1.?????????Stream
????.filter(str -> !Character.isDigit(str.charAt(0)))// 2.????????????????????
????.map(String::toUpperCase)// 3.??????д???
????.collect(Collectors.toSet());// 4.????????
????????????????1. ????List.stream()?????????????Stream??2. ??????filter()??????????????????????????3. ??????map()?????????????????д?????4. ?????collect()??????????????Set????????????????????????????method references???????б??3??????????????Collector???????б??4???????÷?????????????????
???????????????????????Stream???????????????????????????????????????????????????ε???????????????Stream???????????????С?Stream??????????????????м????(intermediate operations)????????????????(terminal operation)????н???????????????????????У??м??????????Щ????????????Stream????????????????ζ???????Stream????????????????????????????ε?????????????Spark RDD???????ò????????
????????
????Java 8????Lambda?????????????????????????????????????????????????????????????????м?????????д??????????Stream API???????????Lambda???????
???????????Java Lambda?????????????????????????????Java???????????????????????????????Lambda????????棬????????????????????????????????????????ò??????????ο????????г????Щ??????????