您的位置:首页 > 编程语言 > Java开发

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接口中定义的方法替换当前的使用方式。

原文地址

原文地址
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: