一、stream
9 stream 新增了一些方法 dropWhile、takeWhile、ofNullable,为 iterate 方法新增了一个重载方法
1.takeWhile
在有序的stream 中 遇到false 就结束 之前的集合就返回
Stream.of("1","2","3","","4","5").takeWhile(s->!s.isEmpty()) .forEach(System.out::print);
//打印 123
2.dropWhile
在有序的stream 中 遇到false 就开始 之后的都返回
Stream.of("1","2","3","","4","5").dropWhile(s->!s.isEmpty()) .forEach(System.out::print);
//打印 45
3.iterate
# 打印1-99 的数字
Stream.iterate( 1 ,i -> i< 100 ,i -> i+1).forEach(System.out::println);
4. ofNullable
如果提供的元素为null,则此方法返回空Stream。当我们要将非空单个元素附加到流时
Stream.ofNullable(1);
Stream.ofNullable(null);
二、Try with Resources
以前的写法 你打开一个资源,要在finally 中关闭 Try with Resources写法 会自动关闭,不用手动关闭
jdk9 做了改进 如果你已经有一个资源是 final 或等效于 final 变量,您可以在 try-with-resources 语句中使用该变量,而无需在 try-with-resources 语句中声明一个新变量。
资源:所有实现了 java.lang.AutoCloseable 接口(其中,它包括实现了 java.io.Closeable 的所有对象),可以使用作为资源。
Scanner scanner = new Scanner(new File("testRead.txt");
PrintWriter writer = new PrintWriter(new File("testWrite.txt"));
try (Scanner s1= scanner; PrintWriter w1=writer){
while (s1.hasNext()) {
w1.print(scanner.nextLine());
}
}
try (Scanner scanner = new Scanner(new File("testRead.txt"));
PrintWriter writer = new PrintWriter(new File("testWrite.txt"))) {
while (scanner.hasNext()) {
writer.print(scanner.nextLine());
}
}
或者
final Scanner scanner = new Scanner(new File("testRead.txt"));
PrintWriter writer = new PrintWriter(new File("testWrite.txt"))
try (scanner;writer) {
// omitted
}