@Testpublic void test5() {ClassLoader cl = this.getClass().getClassLoader();try (InputStream is = cl.getResourceAsStream("hello.txt");OutputStream os = new FileOutputStream("src\\hello1.txt")) {is.transferTo(os); // 把输入流中的所有数据直接自动地复制到输出流中} catch (IOException e) {e.printStackTrace();}}
Stream API的加强
方法
描述
takeWhile
返回从开头开始的按照指定规则尽量多的元素,碰到第一个不满足的时候终止
dropWhile
与 takeWhile 相反,返回剩余的元素
ofNullable
形参变量是可以为null值的单个元素
iterate(T seed, Predicate<? super T> hasNext,UnaryOperator next)
新增的重载的方法,新增了断言条件
@Test
public void test1(){List<Integer> list = Arrays.asList(23, 43, 45, 55, 61, 54, 32, 2, 45, 89, 7);//takeWhile 返回从开头开始的按照指定规则尽量多的元素
// list.stream().takeWhile(x -> x < 60).forEach(System.out::println);//dropWhile():与 takeWhile 相反,返回剩余的元素。list.stream().dropWhile(x -> x < 60).forEach(System.out::println);
}@Test
public void test2(){//of()参数中的多个元素,可以包含null值Stream<Integer> stream1 = Stream.of(1, 2, 3,null);stream1.forEach(System.out::println);//of()参数不能存储单个null值,但是of()可以存储多个null值。否则,报异常
// Stream<Object> stream2 = Stream.of(null);
// stream2.forEach(System.out::println);Integer i = 10;i = null;//ofNullable():形参变量是可以为null值的单个元素Stream<Integer> stream3 = Stream.ofNullable(i);long count = stream3.count();System.out.println(count);
}@Test
public void test3(){Stream.iterate(0,x -> x + 1).limit(10).forEach(System.out::println);//java9中新增的重载的方法Stream.iterate(0,x -> x < 100,x -> x + 1).forEach(System.out::println);
}
Optional提供了生成stream的方法
@Testpublic void test4(){List<String> list = new ArrayList<>();list.add("Tom");list.add("Jerry");list.add("Tim");Optional<List<String>> optional = Optional.ofNullable(list);Stream<List<String>> stream = optional.stream();long count = stream.count();System.out.println(count);stream.flatMap(x -> x.stream()).forEach(System.out::println);}
Java10
局部类型推断
类似于C++中的auto,个人觉的既然IDEA代码补全功能很强大,为了可读性尽量还是写出类型。
@Test
public void test1() {//1.声明变量时,根据所附的值,推断变量的类型var num = 10;var list = new ArrayList<Integer>();list.add(123);//2.遍历操作for (var i : list) {System.out.println(i);System.out.println(i.getClass());}//3.普通的遍历操作for (var i = 0; i < 100; i++) {System.out.println(i);}
}