JDK各个版本的新特性jdk1.5-jdk8

文章链接:JDK各个版本的新特性jdk1.5-jdk8

不过最有用的是java的lambda表达式,还有stream的运用,以及map和reduce。一篇文章就够了。厉害。 

jdk8新特性(部分)

  • 接口可以添加默认方法,default;
  • lambda表达式,对于接口可以直接用()->{}方式来表达,小括号表示方法入参,花括号内表示方法返回值,如Collections的sort()方法:

Collections.sort(names, (String a, String b) -> {
    return b.compareTo(a); }); Collections.sort(names, (String a, String b) -> b.compareTo(a)); Collections.sort(names, (a, b) -> b.compareTo(a));
  • 函数式接口,@FunctionalInterface, 将lambda表达式映射到一个单方法的接口上
  • 方法和构造函数的引用,可以使用::,如Integer::valueOf
  • lambda表达式访问外层作用域和老版本的匿名对象中的方式很像,可以直接访问标记了final的外层局部变量,或者实例的字段以及静态变量。
  • java.util.Stream 表示能应用在一组元素上一次执行的操作序列。Stream 操作分为中间操作或者最终操作两种,最终操作返回一特定类型的计算结果,而中间操作返回Stream本身,这样你就可以将多个操作依次串起来。

Stream 的创建需要指定一个数据源,比如 java.util.Collection的子类,List或者Set, Map不支持。Stream的操作可以串行执行或者并行执行。


//Filter 过滤
stringCollection
    .stream()
    .filter((s) -> s.startsWith("a")) .forEach(System.out::println); //Sort 排序 stringCollection .stream() .sorted() .filter((s) -> s.startsWith("a")) .forEach(System.out::println); //排序只创建了一个排列好后的Stream,而不会影响原有的数据源,排序之后原数据stringCollection是不会被修改的; //Map 映射 //中间操作map会将元素根据指定的Function接口来依次将元素转成另外的对象,下面的示例展示了将字符串转换为大写字符串 stringCollection .stream() .map(String::toUpperCase) .sorted((a, b) -> b.compareTo(a)) .forEach(System.out::println); //Match 匹配 //Stream提供了多种匹配操作,允许检测指定的Predicate是否匹配整个Stream。所有的匹配操作都是最终操作,并返回一个boolean类型的值 boolean anyStartsWithA = stringCollection .stream() .anyMatch((s) -> s.startsWith("a")); boolean allStartsWithA = stringCollection .stream() .allMatch((s) -> s.startsWith("a")); boolean noneStartsWithZ = stringCollection .stream() .noneMatch((s) -> s.startsWith("z")); //Count 计数 //计数是一个最终操作,返回Stream中元素的个数,返回值类型是long long startsWithB = stringCollection .stream() .filter((s) -> s.startsWith("b")) .count(); //Reduce 规约 //这是一个最终操作,允许通过指定的函数来讲stream中的多个元素规约为一个元素,规越后的结果是通过Optional接口表示的 Optional<String> reduced = stringCollection .stream() .sorted() .reduce((s1, s2) -> s1 + "#" + s2); reduced.ifPresent(System.out::println);
  • java.time下包含了全新的时间日期API
  • 支持多重注解

参考这里

转载于:https://www.cnblogs.com/luckyStone/p/7405480.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值