java8特性总结

Lambda的定义及关系

1.Lambda三种表达式:函数引用,匿名内部类,箭头函数

2.变量、对象、类之间关系


String a="123";//函数引用变量入参和出参对照例子
Supplier<Integer> supplier=a::length;//现有对象的实例方法引用    

Function<String, Integer> fun1= String::length;//非静态引用

Function<String, Integer> fun2=Integer::parseInt;//静态方法引用

流式操作

中间操作只是对操作进行了记录,只有结束操作才会触发实际的计算(即惰性求值),这也是Stream在迭代大集合时高效的原因之一。

中间操作又可以分为无状态(Stateless)操作与有状态(Stateful)操作,

前者是指元素的处理不受之前元素的影响;

后者是指该操作只有拿到所有元素之后才能继续下去。

结束操作又可以分为短路与非短路操作,

前者是指遇到某些符合条件的元素就可以得到最终结果;

而后者是指必须处理所有元素才能得到最终结果。

流的原理设计

流的构建

递归带出构建对象,终止递归isEnd

非短路操作,强制求值,包含了递归的应用

 public static <T> Stream<T>  ofStream(Iterator<T> iterator,boolean isStart )   {
        //不仅二叉树可以用递归,链表也可以,  不需要通过stream传递深入构建,但有深度变量
        SerialStream<T> serialStream = new SerialStream<>();
        if (iterator.hasNext()){
            serialStream.isEnd=true;
            return serialStream;
        }
        if (isStart){
            serialStream.nextItemProcessor=()->ofStream(iterator,false);//构建头结点就不用深入传递
            return serialStream;
        }else {
            serialStream.data=iterator.next();
            serialStream.nextItemProcessor=()->ofStream(iterator,false);
            return serialStream;
        }
    }

 

二叉树构建,深入优先遍历

private Node<E> addNode(Node<E> root, E value) {
		/* If root is null, return null */
		if (root == null) {
			return null;
		} 
		/* Compare the values and check if we need to
		 * insert in left subtree or right subtree */
		if ((root.value).compareTo(value) <= 0) {
			if (root.left != null) {
				addNode(root.left, value);
			} else {
				root.left = new Node<E>(value);
			}
		} else {
			if (root.right != null) {
				addNode(root.right, value);
			} else {
				root.right = new Node<E>(value);
			}
		}
		return root;
	}

惰性操作设计

map:入参对应所有集合T=>R

流在并发中的应用

 

CompletableFuture如果两个future是依赖关系,第二个依赖于第一个,则使用thenCompose

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

chenxuezhou

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

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

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

打赏作者

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

抵扣说明:

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

余额充值