欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2022-03-19 16:10:07
/* * 【Author】 爱吃早餐的程序员 * 【Time】2020年12月7日 下午2:45:08 * 【Function】JAVA8 新语法实践 */public class Test11 {public static void main(String[] args) {ArrayList arrayList = new ArrayList<>(10);arrayList.add("1111");arrayList.ad...
/*
 * 【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