netail.net
自作フリーソフトや,ゲームに関する雑記を公開してます.
日記はソフトウェア工学の論文ネタが中心です.
最近のお知らせ (古いものはこちら)
2005-11-11 [長年日記] ▲
_ [Java][ツール] プリミティブ型を格納するコレクションライブラリ ▲
各種調べてみたので少し整理.Javaでは,autoboxing はパフォーマンス上のオーバーヘッドが大きいので,たくさん要素を処理する場合はこれらのコレクションが有効(なはず).
- GNU Trove for Java: http://trove4j.sourceforge.net/
- Primitive Collections for Java: http://pcj.sourceforge.net/
- The Colt Distribution: Open Source Libraries for High Performance Scientific and Technical Computing in Java: http://hoschek.home.cern.ch/hoschek/colt/index.htm
- Type-Specific Collections Library: http://www.sosnoski.com/opensrc/tclib/
int や boolean など,各プリミティブに対する List, Set, Map, Iterator を提供するパッケージ.
コレクションの各要素に対して手続きを呼び出す foreach が利用可能.また,任意の型から int への Map については,int→int変換をかけて別の Map に変換する transformValues というメソッドもある.
Java Collections API との互換性を保つための Decorator も提供(ただし効率は悪い).ライセンスはLGPL.
Troveと同様,各プリミティブに対するList,Set,Map,Iteratorを提供するが,それに加えてSortedSet,範囲型(Range)なども提供.
ハッシュの実装を Chained (ハッシュ結果が Linked Listになっているもの)と Open (ハッシュ結果のエントリが埋まっていたら他にさらに移動するもの)から選択する必要があり,選べて嬉しいともいえるし,いちいち選択するのは面倒ともいえる.
Java Collections API との互換性を保つための Adapter も提供.ライセンスはLGPL.
Trove4Jと比べた場合,こちらだけが提供するSortedSetなどを使いたいか,それとも Trove4J だけが持つ foreach などが使いたいか,によってどちらを選ぶかが決まりそう.
主に int と double に関する配列・行列処理用クラス群.事前条件をチェックしない setQuick などの高速処理用メソッドを持つ.
その他,複素数,行列演算,様々な分布の乱数生成などのパッケージもくっついている.
ライセンスはパッケージごとに異なっており,ほとんどは非商用なら利用可能.一部 Mutex などを提供するパッケージのみ GPL になっている様子.
array, queue, stack, set, map をサポート.array は,主に配列との相互変換を重視している.
short や long などはサポートしていないコレクションもあり,また全体的にメソッド数も少ない(add と get での利用が基本のよう).
機能が少ないぶんシンプル(目的のものを探すのが容易)なパッケージだと思われる.ライセンスは独自で,基本的には自由にしてくれというもの.