番石榴图书馆:它最有用和/或隐藏的功能是什么?[已关闭]
我已经快速浏览了番石榴API及其提供的新集合类型(例如看起来很有用),我正在考虑将库包含在我工作的项目中。Multimap
BiMap
但是,如果库没有太大的好处,我也对包含库保持沉默,并且学习这些功能会浪费宝贵的时间。
您是否将番石榴库包含在您的项目中,它是否以任何意想不到的方式被证明是有用的?将来会一直使用它吗?它的主要好处/节省时间是什么?它的隐藏功能是什么?
我已经快速浏览了番石榴API及其提供的新集合类型(例如看起来很有用),我正在考虑将库包含在我工作的项目中。Multimap
BiMap
但是,如果库没有太大的好处,我也对包含库保持沉默,并且学习这些功能会浪费宝贵的时间。
您是否将番石榴库包含在您的项目中,它是否以任何意想不到的方式被证明是有用的?将来会一直使用它吗?它的主要好处/节省时间是什么?它的隐藏功能是什么?
说真的,番石榴的一切都很有用。我已经使用它很长一段时间了,并且仍然总是发现一些新的东西,我可以用它来做,比手工做的代码少。
有些事情其他人没有真正提到我喜欢:
Multimap
s只是很棒。任何时候,您都会使用类似 的东西,而是使用多映射,并节省大量繁琐的检查,以检查映射到键的现有集合,并在不存在时创建并添加它。Map<Foo, Collection<Bar>>
Ordering
非常适合构建符合您所需方式的建筑物。Comparator
Maps.uniqueIndex
和 :这些方法采用 an 和 a 并构建一个 or,该 or 通过对每个方法应用函数的结果来索引 。因此,使用检索项目 ID 的函数,可以在一行中按项目 ID 对项目列表编制索引。Multimaps.index
Iterable
Function
ImmutableMap
ImmutableListMultimap
Iterable
filter
transform
Function
Predicate
ComparisonChain
是一个容易被忽视的小类,当您想要编写一个连续比较多个值的比较方法时非常有用,并且应该在找到第一个差值时返回。它消除了所有这些乏味,使其只有几行链接的方法调用。Objects.equal(Object,Object)
- 空安全等于。Objects.hashCode(Object...)
- 基于类的多个字段获取哈希代码的简单方法。Objects.firstNonNull(Object,Object)
- 如果第一个值为 null,则减少用于获取默认值的代码,特别是如果第一个值是方法调用的结果(在以正常方式执行此操作之前,您必须将其分配给变量)。CharMatcher
s已经提到过,但它们非常强大。Throwables
让你用可投掷物品做一些好事,比如如果它是a或an,它会重新抛出一个可扔掉的,然后把它包裹在a中,然后扔掉。Throwables.propagate
RuntimeException
Error
RuntimeException
我当然可以继续,但我必须开始工作。=)无论如何,尽管我在这里列出了一些我喜欢的东西,但事实是番石榴中的所有内容在某些情况下都是有用的。其中大部分通常很有用。当您使用它时,您会发现更多用途。不使用它会感觉有点像把一只手绑在背后。
几年来,我在谷歌内部有效地使用番石榴 - 这真是太棒了。
我特别喜欢的部分是:
Charsets.*
- 如此简单,如此有用Splitter
/Joiner
Preconditions