JDK7和JDK8一些重要新特性
2024-08-22 01:38:37
jdk7新特性(部分)
- switch支持字符串
- List tempList = new ArrayList<>(),泛型实例化自动推断
- AutoCloseable接口实现自动关闭,在try()中
- 新增获取环境信息的工具方法,getJavaHomeDir,getUserHomeDir,getUserDir等
- 对java集合的增强支持,如:
List<String> list=["item"]; //向List集合中添加元素
String item=list[0]; //从List集合中获取元素
Set<String> set={"item"}; //向Set集合对象中添加元素
Map<String,Integer> map={"key":1}; //向Map集合中添加对象
int value=map["key"]; //从Map集合中获取对象
- 数值可以加下划线,int one_million = 1_000_000;
- 在try catch异常扑捉中,一个catch可以写多个异常类型,用"|"隔开;
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
- 支持多重注解
最新文章
- Microsoft.AspNet.Identity 自定义使用现有的表—登录实现
- windows服务 定时任务
- mysql 上传数据到指定字段
- MyEclipse常用插件使用教程
- 洛谷 P1038 神经网络 Label:拓扑排序 &;&; 坑 60分待查
- SIFT算法的应用--目标识别之Bag-of-words模型
- Redis failover过程
- grb文件的读取
- jq的合成事件
- 解压文件--linux
- 江西省移动物联网发展战略新闻发布会举行-2017年10月江西IDC排行榜与发展报告
- 「LibreOJ β Round #4」框架 [bitset]
- 记录一种下载https网址中的mp4文件的方法
- Go 语言 map (映射)
- windows server下设置远程会话自动注销
- 海思QT4.8.0开发总结
- Sep 15th 2018
- java1.8 版本改成 java1.7版本
- BZOJ3193 [JLOI2013]地形生成 【dp】
- apache commons pool
热门文章
- 第一章 Part 1/2 Git 一览
- Linux系统下配置环境变量
- wxPython 自动提示文本框
- PHP数组常用函数
- 第3月30天 UIImage imageWithContentsOfFile卡顿 Can&#39;t add self as subview MPMoviePlayerControlle rcrash
- 使用Open xml 操作Excel系列之一-读取Excel
- 关于robotframework,app,appium的xpath定位问题及常用方法
- 我的攒机(zuosi)过程
- HTML5 图片本地压缩上传插件「localResizeIMG」
- ORA-00257: archiver error. Connect internal only, until freed.