/*
* 【Author】 爱吃早餐的程序员
* 【Time】2020年12月7日 下午2:45:08
* 【Function】JAVA8 新语法实践
*/
public class Test11 {
public static void main(String[] args) {
ArrayList<Object> arrayList = new ArrayList<>(10);
arrayList.add("1111");
arrayList.add("11121");
arrayList.add("1121");
arrayList.add("11111");
arrayList.add("11131");
arrayList.parallelStream().forEach(item -> System.out.println(item));
arrayList.forEach(item -> System.out.println(item));
//Stream 是在 Java8 新增的特性,普遍称其为流;它不是数据结构也不存放任何数据,其主要用于集合的逻辑处理。
arrayList.stream().forEach(item -> System.out.println(item));
//正确的格式 Stream和parallelStream,前者是单管,后者是多管,运行时间前者大于后者
arrayList.stream().sorted().forEach(System.out::println);
arrayList.parallelStream().sorted().forEach(System.out::println);
// 双冒号
Supplier<User> supplier1 = () -> new User();
System.out.println(supplier1.get() instanceof User); //true
Supplier<User> supplier2 = User::new;
supplier1.get().setName("sch");
supplier1.get().setPass("1234");
System.out.println(supplier1.get()); // User [name=null, pass=null]
supplier2.get().setName("sch");
supplier2.get().setPass("1234");
System.out.println(supplier2.get()); //User [name=null, pass=null] 可见supplier1 supplier2 都是 空构造器
Supplier<User> supplier3 = ()->new User("sch","1234");
System.out.println(supplier3.get());
supplier3.get().setName("sch1");
System.out.println(supplier3.get()); // 综上可知 supplier 的构造信息只和最初设置的时候的值有关 后续的set不起效
Function<Integer, int[]> array1 = int[]::new;
Function<Integer, int[]> array2 = int[]::new;
System.out.println(array1.getClass() == array2.getClass());
System.out.println(array1.apply(1) instanceof int[]);
System.out.println(array1.apply(1).length); // 长度传入apply方法
// array1.andThen(array2); 两个一样的构造器无法 andThen
Function<Integer, Integer> array3 = s ->s*2 ;
Function<Integer, Integer> array4 = t ->t*3;
System.out.println(array3.apply(1) instanceof Integer);
System.out.println(array3.apply(2));
Integer apply = array3.andThen(array4).apply(2); // 2*2*3 也就是先执行s*2 再执行 t*3
System.out.println(apply);
String str1 = null;
String str2 = "";
String str3 = "123";
System.out.println(Optional.ofNullable(str1).isPresent()); // false
System.out.println(Optional.ofNullable(str2).isPresent());// true
System.out.println(Optional.ofNullable(str3).isPresent());// true
}
}
盘点jdk8中常见的实用操作
最新推荐文章于 2023-02-28 18:04:52 发布
![](https://img-home.csdnimg.cn/images/20240711042549.png)