テストされ、文書化され、適切に保守されている組み込みライブラリを使用することは、通常、良い習慣です。
また、グアバについてさらに学ぶのに役立ちます。「たった1つのことのために」それを使い始めると、あなたはおそらくあなたの人生を少し楽にするためにあなたが使うことができるはるかに多くのものがあることに気付くでしょう。
また、別の方法として、マルチマップのカスタム実装としてでTreeMap<Key,List<MyClass>>
はなくを使用することもできます。TreeMap<Key,MyClass>
メモリに関しては、データを可能な限り最小化するように努める必要があります(効率的なデータ構造を使用し、「無駄」の必要はありません。String
たとえば、IPを保存するために、より安価な代替手段があり、それらを活用します。
また、OSは、仮想メモリを使用することで、RAMよりも多くのメモリを提供できることに注意してください(実際には64ビットマシンの場合、十分すぎる可能性があります)。ただし、ディスク専用のDS( B +ツリーなど)よりも効率が低下する可能性があります。
代替案:
-の代替案としてTreeMap
、他のデータ構造に興味があるかもしれません(それぞれに長所と短所があります):
- ハッシュテーブル-javaのように実装され
HashMap
ます。その場合、タイプはになりますHashMap<Key,List<Value>>
。平均的なケースのクエリを許可しますが、最悪のケースO(1)
に減衰する可能性があります。O(n)
また、効率的な範囲クエリは許可されません。
- トライまたはそのよりスペース効率の良いバージョン-基数木。
O(1)
各キーへのアクセスを許可しますが、通常、他のキーよりもスペース効率が低くなります。このアプローチではMap
、DSとのインターフェイスを実装し、タイプは次のようになります。Map<Key,List<Value>>
- B +ツリー。これはディスク用にはるかに最適化されています。データが大きすぎてRAMに収まらない場合は、結局のところ。