(java8)语言的进化---更深层次的抽象

语言的进化是更高层次的抽象,语言设计者完成了更高、更好的抽象,语言的使用者也需要提高自己的抽象能力。技术的进步,要求相关的人员跟进这一进步。举个例子:

1.0 java中使用for-each循环求和的代码:

        int sum = 0;
        for(int x:numbers) {
            sum += x;
        }

2.0 貌似设计的不错,但是当用户提出更多的要求,比如求numbers中所有元素的积,求阶层,等等。此时怎么办?更多的人会不加思考的另起炉灶,再码N段代码去实现不同的运算。其实java语言的设计者已经将语言抽象到很高的层次,这时,要求程序的设计者相应提高对问题的抽象层次。

int sum = numbers.stream().reduce(0, (a,b) ->a+b);
这是java8中使用流的相关技术实现的求和,看起来是不是很简单,是的,书写是简单了,但是变得更抽象。抽象意味着要花多一点时间去理解。
 numbers.stream() //产生流,
.reduce(0, (a,b) ->a+b); //归约技术,括号内部是Lambda表达式。
Lambda表达式也是java8的新特性,是的表达式转正,可以被当做参数来传递了。java8之前是不可以的。
流与Lambda表达式的结合使我们的工作变得简单,有了这两个技术,要计算numbers中所有元素的积,阶层等,只需要相应替换reduce()括号中的Lambda表达式就可以了。


http://www.cnblogs.com/skywang12345/p/3308556.html#a1    讲解ArrayList非常详尽,明天继续看。


猜你喜欢

转载自blog.csdn.net/weixin_41670928/article/details/80088895
今日推荐