盘点jdk8中常见的实用操作

本文介绍了Java8的Stream API,展示了parallelStream和stream的区别,以及Supplier、Function和Optional等新特性的用法,通过实例详细解释了这些新语法如何提升代码效率。
摘要由CSDN通过智能技术生成
/*
 * 【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
		
		
	}
}
  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃早餐的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值