2016-09-11 7 views
0

私はトライを実装しようとしていましたが、実装例では、サイズ26の小さな配列を使って子供を格納するのにスペース効率がよいと読んでいました。なぜなら、HashMapでスペースを無駄にする必要がないからです配列の代わりにハッシュマップを使用するためのスペースのオーバーヘッドはありますか?

しかし、26個の値を必ずしも保存する必要はないので、マップのスペース効率は向上しませんか?または、単純なint []型は、これらのより複雑なオブジェクトの実装が使用する余分なスペースをバックグラウンドで使用しないため、キーとしてCharacterオブジェクトを含むHashMapオブジェクトです。

この人物が間違っているかどうか、またはHashMapのようなオブジェクト型を使用する際のオーバーヘッドがあるかどうかをチェックしたいだけです。

+4

もちろん、オーバーヘッドはわずかですが、実際には関連性がありますか? – Kayaman

答えて

2

ハッシュマップはキーと値を格納するため、ハッシュマップを使用してトライを実装する場合は、値だけでなくキーも保存します。配列を使用する場合、キーは実際には配列内の値のインデックスなので、どこにでも格納する必要はありません。

さらに、ハッシュマップは、常にの負荷係数を持っているため、動作よりも多くのエントリを必要以上に確保しているということと同じです。私はあなたの問題に関連していないので、これを拡張していませんが、好奇心が強い場合は、ハッシュマップの負荷係数を検索してください。

+0

あなたは間違いありません。あなたが述べた理由により、ハッシュマップのスペース効率は低下します。しかし、おそらくカヤマンは* REAL *の答えを持っていると思います。「当然のことながら、オーバーヘッドは小さいですが、本当に関連性がありますか?」私はいくつかのバイトを保存する[間違った経済](https://en.wikipedia.org/wiki/False_economy)のためだけに適切であるところでハッシュマップを使用しない人がいるのを見たくないと思います... – paulsm4

+0

@確かに、それは実際の質問に対する答えではありません。それは、カヤマンがすでにコメントでそれを述べているので、私はそれを繰り返さないようにしています。 –

0

これは古典的なプログラミング妥協です。この場合、HashMapを使用すると、より多くのスペースが必要になりますが、これはパフォーマンス向上のために支払う予定の価格になる可能性があります。そうでないかもしれない。あなたの問題によって異なります。

関連する問題