Guava API と、それが提供する新しいコレクションタイプ(Multimap
とBiMap
が便利だと思われる)のクイックスキャンを行ったので、私が取り組んでいるプロジェクトのライブラリ。
ただし、ライブラリに大きなメリットがなく、機能を学習すると貴重な時間が浪費される場合は、自由にライブラリを含めることを控えています。
プロジェクトにGuavaライブラリを含めましたか?また、予期しない方法で有用であることが証明されましたか?今後も常に使用しますか?その主な利点/時間の節約は何ですか?その隠された機能は何ですか?
Google内で数年間Guavaを効果的に使用していますが、それは素晴らしいことです。
私が特に好きな部分は:
Charsets.*
-とてもシンプルでとても便利Splitter
/Joiner
Preconditions
最初はコレクションの略記に使用しました。たとえば、次の代わりに:
Map<String, Map<Long, List<String>>> map = new HashMap<String, Map<Long, List<String>>>();
あなたはこれを行うことができます:
Map<String, Map<Long, List<String>>> map = Maps.newHashMap();
また、マップを作成するのも簡単です。
ImmutableMap<String,String> map = ImmutableMap.of("key1", "value1", "key2", "value2");
今、私はグアバに存在するいくつかの他の有用なユーティリティを発見しました。たとえば、 CharMatcher クラスを使用すると、文字のシーケンスを一致させることができます。できるよ:
CharMatcher.inRange('a','z').or(inRange('A','Z'));
または
String phoneNumber = CharMatcher.DIGIT.retainFrom("my phone number is 123456789");
CharMatcherのprecomputed()メソッド( source )は、先日偶然見つけた素敵な「隠された機能」です。
ルックアップテーブルを(ビット配列を使用して)作成し、単に文字を検索して「一致」するかどうかを確認するだけの最適化です。
これは、ライブラリを使用するときに活用できる隠れた最適化の一種であり、自分のコードで自分のことを考えたことがないかもしれません。
もちろん、何度も使用する予定の複雑なCharMatcherを作成する場合は、次のようにprecomputed()メソッドを呼び出すことを忘れないでください。
CharMatcher complexMatcher = CharMatcher.anyOf("cat")
.or(CharMatcher.DIGIT)
.or(CharMatcher.WHITESPACE)
.precomputed();
これは YouTubeビデオ Googleからです(スピーカー:Kevin Bourrillion、GoogleのコアのリードエンジニアJavaライブラリ)。Googleコレクションの美しさを示しています。 guaranteeコレクションの不変性は素晴らしいと思います。
Google Guavaはユーティリティライブラリであるため、その中にキラークラスがあるとは思えません。実用性についてのすべては、あなたが持っているすべてのプロジェクトでほとんどそれを使用することです。 Javaコレクションを使用しないプロジェクトを行ったことを思い出せません。実際、Google Guavaのコレクションユーティリティは素晴らしいもので、Java SDK自体。
Google Guavaのクラスについて3つの記事を書きました。
CheckedFuture
の使用: http://blog.firdau.si/2010/07/07/guava-using-checkedfuture/ListenableFuture
の使用: http://blog.firdau.si/2010/07/05/guava-using-listenablefuture/ComputingMap
on Google Collection(現在のGuava) http://blog.firdau.si/2009/11/13/computing-map-on-google-collections/そしてこれだけではありません。グアバでできることは他にもたくさんあります。
絶対に非常に便利です。ほとんど常に、新しいプロジェクトに追加された最初のライブラリです。
全体的に、ライブラリは非常に高品質です。 APIは十分に検討されており、実装は堅固です。強くお勧めします。
MapMakerは、境界付きLRUキャッシュを提供するようになりました-これは、小さなAPIの背後に隠された実質的な機械です。これは非常に有用な可能性があり、私はまだコード全体に精通しています。