guava
guava は google が提供している java 用の便利ライブラリ集。 Java 8 より昔からあるので、Java8 でコアに入った機能と重複している機能も多い。IntelliJ ならそういうものも警告してくれるので、警告がでたら素直に受け入れて JDK の メソッドを利用するのが良い。
guava の利用シーン自体は減っているが、そういった中でもまだまだ便利な機能も多いので、便利なものを紹介する。
Lists.partition
一つの List を複数の List に分割する。100 要素のリストを 10 要素のリスト10個に分割、とかできる。便利。
List<Integer> bigList = ...
List<List<Integer>> smallerLists = Lists.partition(bigList, 10);
なお、Apache commons collections 4 でも同様のことができます。 機能に差はないので、すでに依存に入ってるほうを利用する、ぐらいの気持ちでいいと思います。
List<Integer> bigList = ...
List<List<Integer>> smallerLists = ListUtils.partition(bigList, 10);
コンテナインスタンスの作成
Sets.newHashSet("foo", "bar")
HashSet<String> strings = Sets.newHashSet("foo", "bar");
Arrays.asList(a, b, c)
で List の構築が簡単にできますけれど、Set の構築が簡単にできるメソッドが Java 8 の時点では存在していません。 そこで、Set の構築には guava の便利メソッドを利用するのが一般的です。 HashSet のインスタンスを作成します。標準ライブラリには相当するものが無いので、 guava を利用すると便利です。
JDK9 では Set.of
でできるようになります。
ref. http://jyukutyo.hatenablog.com/entry/2016/01/04/182402
オンメモリキャッシュ
オンメモリキャッシュは Caffeine を利用したほうが良いでしょう。
CaseFormat の変換
CamelCase
を lower_case
に変換したい時には CaseFormat を利用できます。
Format | Example |
---|---|
LOWER_CAMEL | lowerCamel |
LOWER_HYPHEN | lower-hyphen |
LOWER_UNDERSCORE | lower_underscore |
UPPER_CAMEL | UpperCamel |
UPPER_UNDERSCORE | UPPER_UNDERSCORE |
以下のように利用できます。
CaseFormat.UPPER_UNDERSCORE.to(CaseFormat.LOWER_CAMEL, "CONSTANT_NAME")); // returns "constantName"
FAQ
apache commons と guava
両方とも言語コアの機能の足りないところを補うことを目標に開発されたライブラリなので機能がわりとかぶっています。
大差ないし、なんかいろいろと maven で依存入れてると両方とも依存に入ってきがち。 お好みで使い分ければよろしい。
guava とバージョニング
guava はあまり下位バージョンとの互換性を重視していないため、バージョン間でバイナリ互換性が保たれていない時があります。
バージョンアップ時はご注意ください。