Java 8是否废弃了Eclipse Collections?

4
我最近偶然发现了Eclipse Collections,它们看起来很棒 - 几乎和Java 8 streams一样棒。我阅读了一些介绍、演示和教程,似乎EC添加的几乎所有东西都可以用流现在实现。
丝毫不想贬低EC,是否还有任何价值的库添加到我们已经拥有流中,也许在我所阅读的内容中被忽略了吗?或者它是否基本上走上了Joda时间的道路;变得如此出色以至于它被采纳到Java中,基本上取消了该库的需要?

3
我不同意关闭标记太宽泛的做法。这是一个有趣的问题,与Java编程总体有关。但我建议您提供一些已经消失的元素的示例代码和替代方法。 - Tschallacka
@Tschallacka,如果您查看https://github.com/eclipse/eclipse-collections/blob/master/docs/guide.md,它会列出大量的EC解决方案,就在它们的Java 8 Stream解决方案旁边,它们大多看起来相同或类似。 - Torque
2
我是 Eclipse Collections(EC)的创作者,目前仍然是活跃的提交者。由于现在只能发表评论,以下是我的简短回答。1. 不是。2. 是的。3. 目前还没有,但我希望有一天它能够像 Joda 那样发展,并成为 JDK 的一部分。Nikhil Nanivadekar(当前的 EC 项目负责人)和我在 JavaOne 2017 上进行了 API 深度探讨演示,这可能会为您提供有关 EC 在 JDK Collections 和 Streams 之外添加了什么的更多有用信息:http://eclipse.github.io/eclipse-collections-kata/api-design。感谢您的赞美。 - Donald Raab
1
EC 9.1发布博客:https://medium.com/@donraab/eclipse-collections-9-1-released-24c413d200ec - Donald Raab
2
这个问题应该被公开,以便库的维护者(我是其中之一)有机会回复。 - Nikhil Nanivadekar
1
由于这个问题已经关闭,我在Medium上回答了它https://medium.com/@motlin/java-has-streams-do-we-need-third-party-collections-dd12f473d105 - Craig P. Motlin
1个回答

3
https://www.eclipse.org/collections/Eclipse Collections的历史 Eclipse Collections最初作为Goldman Sachs的一个名为Caramel的集合框架诞生于2004年。此后,该框架不断发展壮大,并在2012年以GS Collections的名义开源至GitHub。
GS Collections曾在多个会议上进行介绍,包括2012年的JVM Summit和2014年的JavaOne。2014年在QCon New York上还曾对比了Java 8、Scala和GS Collections并行lazy实现的性能。此外,关于GS Collections的文章(Part1 / Part2)已经发布在InfoQ.com上,展示了该集合框架的一些能力,并且采访了GS Collections的创建者。
多年来,同一家公司的约40位开发人员为集合框架做出了贡献。
为了充分发挥开源项目的优势,GS Collections于2015年迁移到Eclipse Foundation,并更名为Eclipse Collections。现在,该框架完全开放给社区,欢迎大家的贡献!
看起来它仍然很活跃。如果你阅读上面的页面,它可以完全使用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流一起使用,使流处理变得更加容易。
它仍然添加了易于比较的函数等等,这样您就不必编写自己的代码,只需实现适合您需求的现成的lambda方法或流解析器。它似乎有些多余,因为anySatisfy很像filter,但通过在代码本身中写出确切的预期发生情况,它确实增加了代码的清晰度。
在某些情况下,堆栈和袋子对我很有用。有时候你不想使用流,因为集合很小(1000或更少),初始化流的开销不值得。 这使得编写更小、性能更好的代码变得更加容易。
它可能不像Java8之前那样重要,但它仍然有其存在的价值。

1
我并不是想表明这个项目已经死了,就像Joda Time并没有死一样,只是似乎在一个新项目中采用它没有太多的用途。 - Torque
2
this.people.anySatisfyWith(Person::hasPet, PetType.CAT) 是 Eclipse Collections 在其大多数直接 API 中添加的一些内容的示例,这些内容为方法引用使用提供了更多机会。在此 DZone 文章的末尾有更多“With”方法的示例:https://dzone.com/articles/preposition-preference - Donald Raab

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接