JAVA8常见的操作lambda表达式双引号parallelStream等,解放双脑,直接上代码

2022-07-26,,,,

/*
 * 【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);
		
		
	}
}

本文地址:https://blog.csdn.net/weixin_39076203/article/details/110857112

《JAVA8常见的操作lambda表达式双引号parallelStream等,解放双脑,直接上代码.doc》

下载本文的Word格式文档,以方便收藏与打印。