2_java 8 新特性

当面试官让说几个java8新特性的时候了解的可能还能说两句,不了解的只会一脸懵逼,主要原因在于不常使用所以很难接触到近而了解它。

1.接口默认方法

通过default 关键字可以为接口中的方法提供默认实现(通常情况接口方法中只能有接口,不能实现):

public interface Java8NewFeature {
    default int getNewNum(int num) {
        return 2 * num;
    }
}
public static void main(String[] args) {
   Java8NewFeature java8Newfeature = new Java8NewFeature () {};
    System.out.println("新特性,接口默认方法:"+java8Newfeature.getNewNum(4));
}

输出结果:
新特性,接口默认方法:8

2.lambda表达式

 public interface TestForLambda{
   void sendMessage();
}

public interface TestForLambda2{
    String getMessage(String msg);
}

public static void main(String[] args){
    TestForLambda testForLambda = ()-> {
        System.out.println("简单实现了接口方法");
        System.out.println("do something");
    };
    testForLambda.sendMessage();

    TestForLambda2 testForLambda2 = (a)->"hello "+a;
    System.out.println(testForLambda2.getMessage("javajov"));
}

3.Optional

用来处理空值的类,如果你使用过springboot的jpa 那么你肯定对Optional不陌生,通过ID从数据库查询记录的时候返回的就是Optional。如果你项目中使用过kotlin,我相信各位对它在空值变量的限制上一定映像深刻。可见现在对null的处理开始重视起来了。

public static void main(String[] args) {
    System.out.println("=======测试有值的情况begin========");
    Optional<String> ret = Optional.of("javajov");
    ret.ifPresent(data -> System.out.println("有值的时候做点事情:" + data));
    System.out.println("获取值1:" + ret.orElse("如果为空则返回else提供的内容"));
    System.out.println("获取值2:" + ret.get());
    System.out.println("=======测试有值的情况end========");
    System.out.println("=======测试NULL的情况begin========");
    String bean = null;
    Optional<String> ret2 = Optional.ofNullable(bean);
    ret2.ifPresent(data -> System.out.println("有值的时候做点事情:" + data));
    System.out.println("获取值1:" + ret2.orElse("如果为空则返回else提供的内容"));
    System.out.println("获取值2:" + ret2.get());
    System.out.println("=======测试NULL的情况end========");
}

输出
=======测试有值的情况begin========
有值的时候做点事情:javajov
获取值1:javajov
获取值2:javajov
=======测试有值的情况end========
=======测试NULL的情况begin========

4.stream

它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。

public static void main(String[] args) {
    List<String> list = new ArrayList<>();
    list.add("cc");
    list.add("bb");
    list.add("dd");
    list.add("aa");
    list.add("111");
    list.add("222");
    list.add("333");
    //filter过滤,假如list里面存放的是实体类,使用filter可以按照你想要的方式进行过滤
    List<String> newlist = list.stream().filter(bean -> bean.length() == 3).collect(Collectors.toList());
    System.out.println("filter过滤之后:");
    newlist.forEach(bean -> System.out.print(bean + ","));
    System.out.println();
    System.out.println("list 原来的内容并不会变化如下:");
    list.forEach(bean -> System.out.print(bean + ","));
    System.out.println();

    //使用sorted进行排序
    List<String> sortedList = list.stream().sorted((a, b) -> a.compareTo(b)).collect(Collectors.toList());
    System.out.println("sorted排序之后:");
    sortedList.forEach(bean -> System.out.print(bean + ","));
    System.out.println();
    System.out.println("list 原来的内容并不会变化如下:");
    list.forEach(bean -> System.out.print(bean + ","));
    System.out.println();
    //使用map进行转换
    List<String> mapList = list.stream().map(bean -> bean.toUpperCase()+"hello").collect(Collectors.toList());
    System.out.println("map转换之后:");
    mapList.forEach(bean -> System.out.print(bean + ","));
    System.out.println();
    System.out.println("list 原来的内容并不会变化如下:");
    list.forEach(bean -> System.out.print(bean + ","));
    System.out.println();
}

输出:

filter过滤之后:
111,222,333,
list 原来的内容并不会变化如下:
cc,bb,dd,aa,111,222,333,
sorted排序之后:
111,222,333,aa,bb,cc,dd,
list 原来的内容并不会变化如下:
cc,bb,dd,aa,111,222,333,
map转换之后:
CChello,BBhello,DDhello,AAhello,111hello,222hello,333hello,
list 原来的内容并不会变化如下:
cc,bb,dd,aa,111,222,333,
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值