???????
???????????????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????????妫�????????????????????????????????????????貌??????????慰????????谐????些??????????