【问题标题】:How do I learn to use Java commons-collections?我如何学习使用 Java 公共集合?
【发布时间】:2011-12-28 14:14:06
【问题描述】:

奇怪的标题,我知道,让我解释一下。

我是最熟悉 C# 和 Javascript 的开发人员。我完全沉浸在那些半功能性的世界中,以至于我的大部分代码都是关于映射/减少/过滤集合的。在 C# 中,这意味着我几乎在任何地方都使用 LINQ,在 Javascript 中则是 Underscore.js 和 jQuery。

我目前被分配到一个正在进行的 Java 项目,我感到相当窒息。我根本不认为“创建一个数组,将东西从一个到另一个”。我可以(并且确实)使用实现接口的匿名类型创建自己的主要 map/reduce 函数版本,但为什么要重新发明轮子呢?我目前正在进行的项目已经有 commons-collections-3.1.jar 并且查看包含的类似乎可以做我想做的一切以及更多。

对于我的生活,我找不到实际使用它的方法。浏览其中的数十个课程并不是很有帮助,我唯一可以在 Google 上搜索 is the api doc 的内容同样有帮助。

您如何使用它来映射/选择、过滤/位置、减少/聚合?有没有地方提供这个库的实际教程?

【问题讨论】:

  • 请注意,Commons Collections 是相当遗留的,不支持泛型。
  • 呃,认真的吗?那么不打算使用它。什么是提供集合处理能力并支持泛型的包?
  • Google Collections(Guava 的一部分)实际上是 Commons Collections 的继承者。

标签: java mapreduce apache-commons-collection


【解决方案1】:

(注释作为格式的答案。)

没有那么多,除了有限的user guide

也就是说,我不确定您具体在哪里遇到问题 - 过滤和选择主要包含在 functors package 中,并由 CollectionUtils 类使用。

虽然您不是在寻找替代品,但您可能会发现 GuavaLambda4J 之类的内容与您习惯使用的内容更相似(在 Java 的限制范围内),而且它们也没有那么冗长.

【讨论】:

  • 啊 CollectionUtils 是我一直在寻找的。这应该足以让我开始,但天哪,这些人需要让他们的文档进入真正有用的状态。即使那个指向我想要的直接类的链接也没有包含使用示例,但我很幸运,我认识到一些方法签名与我自己实现的相似。
  • @GeorgeMauer 我认为这是它已经存在了很长时间的事情之一,它假设每个人都刚刚通过渗透学会了它;)
  • 我感觉所有的 Java 都是这样 :)
  • @GeorgeMauer 有时可能——没有“管理机构”,可以这么说,信息有时会有点分散。它也很老了,这就是我指向 Guava/Lambda4J 的原因;多年来,它只是一种积累的材料,没有相应的文档。也许我会写点什么。
  • @GeorgeMauer 指出 Guava 支持泛型,并且看起来更像现代 Java,而不是陈旧的集合库——不应该是硬卖。并排显示几个。否则……扔掉。
【解决方案2】:

试试这些链接:

http://commons.apache.org/collections/userguide.html(基础教程) http://larvalabs.com/collections/tutorial.html(泛型进阶教程)

【讨论】:

  • 这些链接只包含标准集合的东西,但没有关于 commons-collections 中的闭包/过滤器/变压器的东西。
【解决方案3】:

@george-mauer,你可能不得不依赖像 this 这样的文章或像 Jakarta Commons Cookbook 这样的书。我还发现通过创建自己的示例来学习非常有用。

【讨论】:

  • 嗯,那个链接只是谈论匿名接口实现者,我当然不会在几个月的项目中获得/阅读一本书。什么皮塔饼
猜你喜欢
  • 2010-09-22
  • 2023-02-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-14
  • 2010-09-08
  • 1970-01-01
  • 1970-01-01
  • 2014-02-20
相关资源
最近更新 更多