关于java8新特性的一些总结

以前找工作时,看了java8新特性,不能深入理解,感觉只是看了个皮毛,今天再看了一遍,多了些新的理解:
1.Lambda表达式
优化的问题:
主要在减少代码编写方面进行了优化,主要减少了什么代码的编写,看例说明?
java7与java8的对比

package test;
@FunctionalInterface
public interface MyWorld {
     void doSometing(String s);
}

在java7中满足面向接口编程需要,写一个实现该接口的类,再new

package test;
public class MyTruelyWorld {
     public static void main(String[] args) {
        new MynewWorld().doSometing("学习lambda");
    }
}
class MynewWorld implements MyWorld {
    @Override
    public void doSometing(String s) {
        System.out.println(s);
    }
}

而对于Lambda可以简化成:

package test;
public class MyTruelyWorld2 {
    public static void main(String[] args) {
        MyWorld myWorld=(s)-> {System.out.println(s);};
        myWorld.doSometing("学习Lambda");
    }
}

注意对比看:
1.将一段代码直接赋值给了变量myWorld
2.这段代码的作用是实现MyWorld接口,并new出来。
当然,在java8中提供了Consumer,Predicate等接口(接口具体说明见下篇文章),上面的代码就可以不用编写MyWorld接口,直接简化成:

package test;
import java.util.function.Consumer;
public class MyTruelyWorld2 {
    public static void main(String[] args) {
        Consumer myWorld=(s)-> {System.out.println(s);};
        myWorld.accept("学习Lambda");
    }
}

是不是少了很多代码啊~
2.@FunctionalInterface注解
作用:这个注释比较简单加在接口上就表示该接口只能定义一个抽象方法,避免使用Lambda时自定义接口出现多个实现方法的问题。
3.stream
优化的问题:
stream主要在java集合类方面进行了优化,类似Iterator,但优于Iterator,Iterator在获取集合中的最大元素,最小元素,集合中的某个值的位置等聚合操作时需要for循环挨个遍历,而stream不需要。
stream的使用:
有很多已经实现了的方法,这里列举一二:

package test;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;
public class MyTruelyWorld2 {
    public static void main(String[] args) {
        //过滤出值为偶数的元素并输出
        List<Integer> list = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
        Stream<Integer> stream = list.stream();
        stream.filter((x) -> x % 2 == 0).forEach((x)->System.out.println(x));
        //过滤出值为偶数的元素并转换为list<Integer>
        List<Integer> list2 = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
        Stream<Integer> stream2 = list.stream();
        List <Integer> finalList1=stream2.filter((x) -> x % 2 == 0).collect(Collectors.toList());

    }
}

4.Optional 及联想到Guava中的optional
优化的问题:
使用方法:

ps:楼主比较菜鸟,理解的还是不够深,下次再理解了一些原理性的再往里面加!

原文地址:https://www.cnblogs.com/wangxiaopei/p/8551183.html