【问题标题】:Did Eclipse Collections get deprecated by Java 8? [closed]Eclipse Collections 是否被 Java 8 弃用了? [关闭]
【发布时间】:2018-10-01 00:07:31
【问题描述】:

我最近偶然发现了 Eclipse Collections,它们看起来棒极了——几乎和 Java 8 流看起来一样棒。我阅读了一些介绍、演示和教程,似乎 EC 添加的几乎所有内容,现在都可以使用流来完成。

没有任何贬低 EC 的意思,既然我们有流,图书馆是否还有任何价值,这可能在我读到的内容中被掩盖了?还是它本质上走的是乔达时代的道路?如此之好以至于它几乎一字不差地被采用到 Java 中,从而否定了对库的需求?

【问题讨论】:

  • 我不同意过于宽泛的关闭标志。这是一个有趣的问题,对一般的 java 编程确实有价值。但是,我建议您包含一些已经消失的元素的示例代码以及替换的内容。
  • 我是 Eclipse Collections (EC) 的创建者,并且仍然是活跃的提交者。由于我现在仅限于发表评论,因此我按顺序简要回答了问题。 1. 没有。 2. 是的。 3. 还没有,但我希望有一天它可以效仿 Joda 的演变,成为 JDK 的一部分。 Nikhil Nanivadekar(现任 EC 项目负责人)和我在 JavaOne 2017 上进行了 API Deep Dive 演示,这可能会为您提供一些有关 EC 在 JDK 集合和流之外添加的更多有用信息:eclipse.github.io/eclipse-collections-kata/api-design。谢谢你的赞美。
  • EC 9.1 发布博客:medium.com/@donraab/…
  • 应该打开这个问题,以便图书馆维护者(我是其中之一)有机会回复。
  • 由于这个问题已经结束,我在Medium上回答了它medium.com/@motlin/…

标签: java java-8 java-stream eclipse-collections


【解决方案1】:

来自https://www.eclipse.org/collections/

Eclipse 系列的历史
Eclipse Collections 的起源是 最初是高盛的一个名为 Caramel 的集合框架 2004 年。从那时起,该框架不断发展,并在 2012 年成为 作为一个名为 GS Collections 的项目开源到 GitHub。

GS Collections 已在多个会议上展出,包括 2012 年 JVM 峰会和 2014 年 JavaOne。性能比较 在 Java 8、Scala 和 GS 的并行惰性实现之间 Collections 于 2014 年在纽约 QCon 上展出。还有文章 关于 GS Collections (Part1 / Part2) 已在 InfoQ.com 上发布 通过以下方式展示集合框架的一些功能 示例,还采访了 GS Collections 的创建者。

多年来,来自同一家公司的大约 40 名开发人员拥有 为收藏框架做出了贡献。

为了最大限度地发挥开源项目的最佳性质,GS Collections 已迁移到 Eclipse 基金会,重新命名为 Eclipse 2015 年的合集。现在该框架对社区完全开放, 接受贡献!

它似乎还活着。如果你阅读了上面的页面,它完全可以使用 java 8 lambda。

boolean anyPeopleHaveCats =
  this.people
    .anySatisfy(person -> person.hasPet(PetType.CAT));

boolean anyPeopleHaveCats =
  this.people
    .stream()
    .anyMatch(person -> person.hasPet(PetType.CAT));

当您查看位于 https://github.com/eclipse/eclipse-collections 的存储库时,您会发现仍有贡献并合并到其中。

所以我想说它并没有被弃用,而是一个额外的即用型方法,您可以使用自己的代码和 java 流来简化流式传输。

它仍然添加了简单的比较器功能等。因此您不必编写自己的,您可以实现一个现成的 lamda 方法或适合您需要的流解析器。它看起来确实是多余的,因为 anySatisfy 看起来很像过滤器,但它确实通过写出代码本身预期发生的确切情况为代码增加了很多清晰度。
在某些情况下,堆栈和包对我来说似乎很有用。有时你不想使用流,因为它是一个小集合(1000 或更少),使得流初始化的开销是不值得的。 这使得编写性能更好的小代码变得容易得多。

它可能不像以前的 java8 那样有用,但仍有一席之地。

【讨论】:

  • 我并不是说这个项目已经死了,就像 Joda Time 没有死一样,只是在新项目中采用它似乎没什么用。
  • this.people.anySatisfyWith(Person::hasPet, PetType.CAT) 是 Eclipse Collections 在其大多数直接 API 中添加的一个示例,它为方法引用的使用提供了更多机会。在这篇 DZone 文章的末尾还有更多“With”方法的示例:dzone.com/articles/preposition-preference
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 2021-06-09
  • 1970-01-01
  • 2010-10-12
  • 2011-01-22
相关资源
最近更新 更多