【问题标题】:Google Collections equivalent to Apache Commons Collections ArrayUtils.toObject and ArrayUtils.toPrimitiveGoogle Collections 相当于 Apache Commons Collections ArrayUtils.toObject 和 ArrayUtils.toPrimitive
【发布时间】:2009-12-30 12:21:36
【问题描述】:

既然大家都夸Google Collections(比如here) 我怎么找不到ArrayUtils.toObject()ArrayUtils.toPrimitive() 的等价物?就这么没用吗?我错过了吗?

【问题讨论】:

  • Google Collections 远没有 Commons Collections 成熟,只是没有相同数量和广度的实用方法。
  • 我跑题了,谷歌收藏已经相当成熟了,但是它是以专业的方式构建的,它只处理与收藏相关的事情(因为这些是图书馆的责任),而把通用的事情留给其他人图书馆。这实际上是我目前对大多数 Commons 库的主要抱怨,它们做了很多有用的事情,但也有一些根本不属于某个特定库而是属于其他库的事情。
  • 哦,至于成熟度,Google Collections 刚刚达到 1.0 final :)

标签: java arrays apache-commons guava


【解决方案1】:

老实说,我不确定这些方法中的任何一个是否应该被视为与集合相关的操作,因此我想知道为什么它们一开始就存在。

为了澄清一点,集合通常是一组对象,它们具有一些将它们绑定在一起的语义数据,而数组只是一组预先确定的 something。这些语义数据可能是关于接受或拒绝空值、重复项、错误类型的对象或具有不可接受的字段值等的信息。

大多数(如果不是全部)集合在内部使用数组,但是数组本身不是集合​​。要成为一个集合,它需要一些相关的魔法,例如将对象删除和添加到任意位置,而数组不能做到这一点。我非常怀疑您是否会在 Google Collections 中看到任何类型的数组支持,因为数组不是集合。

但是,由于 Google Collections 将成为 Google 的 Guava libraries 的一部分,这是一个通用实用程序类库/框架,您可以从 com.google.common.primitives 包中找到您想要的内容,例如 Booleans#asList(boolean... backingArray) 和 @987654324 @。

如果您绝对认为它们应该包含与 Apache Commons Collection 的 .toObject().toPrimitive() 相同的方法,您可以随时 submit a feature request as new issue

【讨论】:

  • 所以你说 ArrayUtils 应该是通用语言?我同意这一点,但大多数不太热衷的程序员仍然会首先查看 common-collections ......(是的,对于我们中的一些人来说,数组是一个集合)虽然我同意哲学观点
  • 是的。我知道如果您不是真的喜欢集合和官方定义,那会令人困惑,但由于我知道 Google 的工作人员喜欢这些东西,我怀疑这就是他们离开数组相关操作的原因(大部分? ) 从 Google 收藏中删除。
  • 我也是+1,确实是一个很好的答案,没想到这么快
  • 你很幸运我的“代码编译”(实际上是“图形艺术家正在对布局代码进行最后的润色”)时刻 :)
  • 感谢 Esko 的出色回答!有趣的是,我们在 Google Collections 中确实有一个 ObjectArrays 实用程序类,尽管数组不是集合的事实。但是,collections 包没有任何与原语相关的东西——你有这些东西的正确引用。
猜你喜欢
  • 2015-11-19
  • 2020-01-25
  • 1970-01-01
  • 1970-01-01
  • 2016-09-03
  • 1970-01-01
  • 2012-01-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多