Lambda FAQ_17.Java的集合要去向何方
2014-04-23 11:50
351 查看
Java的集合要去向何方
在Java8发布时Java集合框架已经超过15岁了,虽然它发展的很好,但是随着Java语言运行环境的改变Java集合框架内在的一些假设慢慢变成了问题。最大的变化是在硬件环境,硬件设计者已经将他们的注意力从增加独立核心的时钟频率上转移到在一块芯片上增加更多的核心。为了从多核心上提升性能,应用必须能够将它们的负荷分派到不同的线程上,每个线程都在独自的核心上运行。库的设计者需要将他们的注意力转移到实现这种转变的能力上来,因为在许多Java程序中最集中的操作都是在操作集合元素,所以Java集合框架处于这种改变的中心位置。对Java集合的使用进行分析发现有一种使用场景非常普遍,大部分操作都是从数据源(数组或者集合)中抽取数据,之后迭代集合元素进行类似过滤和映射的操作,最后在一个类似合计的操作中对元素进行合计。目前这种场景的操作需要创建一个临时的集合来存储转换操作的中间结果。然而,这种处理方式可以转换成使用众所周知的“管道和过滤”(Pipes and Filter)的管道(pipeline)方式,这种方式有很大优势:消除中间变量,减少中间存储要求,懒执行(lazy
evaluation),更多的灵活性和操作定义的可组合性。甚至,如果管道中每个操作都被恰当的定义,那么管道作为一个整体可以被自动并行处理(在多核环境中可被拆分为并行处理)。Pipes角色,是作为多个管道操作的连接器,Java8的类库引入了这个概念并由Stream接口实现,查看Stram接口将会明白管道是如何工作的。
这是Java集合框架在Java8中的重要演变。这个演变使函数式编程更多的应用到集合处理中,用Stream接口中定义的方法替换当前的使用方式。
原文地址
原文地址相关文章推荐
- java8 lambda表达式在集合中的应用
- java lambda表达式 遍历操作集合
- [Java 8] (2) Lambda在集合中的使用
- Lambda FAQ_2.为什么在Java中加入Lambda表达式?
- Lambda FAQ_14.默认方法是否给Java引入了多重继承
- Stream Java8的集合类利器——走进Java Lambda
- Java8 lambda遍历集合及BeanUtils.copyProperties()方法小试
- Stream Java8的集合类利器——走进Java Lambda(二)
- Stream Java8的集合类利器——走进Java Lambda(二)
- Stream Java8的集合类利器——走进Java Lambda(二)
- Java Lambda表达式之从集合到流
- JAVA将去向何方?
- 【FAQ】SpingMVC实现集合参数(Could not instantiate bean class [java.util.List])
- 【FAQ】SpingMVC实现集合參数(Could not instantiate bean class [java.util.List])
- 【FAQ】SpingMVC实现集合参数(Could not instantiate bean class [java.util.List])
- Java1.8新特性关于lambda表达式与Stream流的使用以及对集合的实用操作
- Java 8 Lambda 表达式及 Stream 在集合中的用法
- java8-lambda操作数组、集合
- 【Java多线程与并发库】17.java5同步集合类的应用
- Java lambda 以及 Lambda在集合中的使用