タグ付けされた質問 「data-structures」

データ構造は、データの特定のプロパティを効率的に照会および/または更新できるようにデータを編成する方法です。


17
同等のJavaScriptハッシュマップ
この回答の更新3で明らかにされているように、この表記は次のとおりです。 var hash = {}; hash[X] 実際にはオブジェクトをハッシュしませんX。実際には、単にX文字列に変換され(.toString()それがオブジェクトの場合、またはさまざまなプリミティブ型に対する他の組み込み変換によって)、その文字列をハッシュせずに " hash"で検索します。オブジェクトの等価性もチェックされません-2つの異なるオブジェクトが同じ文字列変換を持っている場合、それらは互いに上書きするだけです。 これを考えると、JavaScriptのハッシュマップの効率的な実装はありますか?(たとえば、2番目のGoogleの結果はjavascript hashmap、任意の操作に対してO(n)である実装を生成します。他のさまざまな結果は、同等の文字列表現を持つ異なるオブジェクトが互いに上書きするという事実を無視します。

16
ハッシュ関数はなぜ素数モジュラスを使用する必要があるのですか?
昔、私はデータ構造の本をバーゲンテーブルから1.25ドルで購入しました。その中で、ハッシュ関数の説明は、「数学の性質」のため、最終的には素数でmodするべきだと述べていました。 1.25ドルの本に何を期待しますか? とにかく、私は何年にもわたって数学の性質について考えてきましたが、それでもそれを理解することはできません。 素数のバケットがある場合でも、数の分布は本当にもっと多いのでしょうか?それとも、他の誰もがそれを受け入れるので、これは誰もが受け入れる古いプログラマーの物語ですか?


12
Rでリストを正しく使用する方法
簡単な背景:広く使われている多くの(ほとんど?)現代のプログラミング言語には、少なくとも少数のADT [抽象データ型]が共通してあり、特に、 文字列(文字で構成されるシーケンス) リスト(値の順序付けられたコレクション)、および マップベースのタイプ(キーを値にマップする順序付けされていない配列) Rプログラミング言語では、最初の2つはそれぞれcharacterととして実装されvectorます。 私がRを学び始めたとき、2つのことはほぼ最初から明らかでした:listRで最も重要なデータ型(これはRの親クラスであるためdata.frame)、そして次に、少なくともそれらがどのように機能するか理解できませんでした私のコードでそれらを正しく使用するには十分ではありません。 1つには、Rのlistデータ型はマップADT(dictionaryPython、NSMutableDictionaryObjective C、hashPerlおよびRuby、object literalJavascriptなど)の単純な実装であるように思えました。 たとえば、Pythonの辞書と同じように、キーと値のペアをコンストラクタに渡すことで作成します(Pythonではこれはdictできませんlist)。 x = list("ev1"=10, "ev2"=15, "rv"="Group 1") そして、R辞書の項目には、Python辞書の項目と同じようにアクセスしますx['ev1']。同様に、「キー」または「値」のみを取得できます。 names(x) # fetch just the 'keys' of an R list # [1] "ev1" "ev2" "rv" unlist(x) # fetch just the 'values' of an R list # ev1 ev2 rv # "10" "15" …

3
Redisで使用される基本的なデータ構造は何ですか?
私は決定的なリストで2つの質問に答えようとしています: Redisで使用される基本的なデータ構造は何ですか? そして、各タイプの主な長所/短所/ユースケースは何ですか? したがって、Redisリストは実際にはリンクリストで実装されていることを読みました。しかし、他のタイプの場合は、情報を掘り下げることができません。また、誰かがこの質問に出くわして、さまざまなデータ構造を変更またはアクセスすることの長所と短所の高レベルの概要を持っていない場合、参照するために特定のタイプを最適に使用するタイミングの完全なリストも持っています。 具体的には、文字列、リスト、セット、zset、ハッシュなど、すべてのタイプの概要を説明します。 ああ、私はこれらの記事、とりわけこれまでの記事を見てきました。 http://redis.io/topics/data-types http://redis.io/topics/data-types-intro http://redis.io/topics/faq



14
BツリーとB +ツリーの違いは何ですか?
では、Bツリーは、両方保存することができ、内部および葉ノードにキーとデータを、しかし中にB +ツリーあなたはにデータを格納する必要がリーフノードのみ。 b +ツリーで上記を行うことの利点はありますか? 直感的にはるかに高速に見えるので、どこでもb +ツリーではなくbツリーを使用しないのはなぜですか? つまり、なぜキー(データ)をb +ツリーに複製する必要があるのですか?




19
C#のツリーデータ構造
C#でツリーまたはグラフのデータ構造を探していましたが、提供されていないようです。C#2.0を使用したデータ構造の詳細な調査では、その理由について少し説明しています。この機能を提供するために一般的に使用される便利なライブラリはありますか?おそらく、記事で提示された問題を解決するための戦略パターンを通じて。 独自のArrayListを実装するのと同じように、独自のツリーを実装するのは少しばかげています。 バランスが取れない一般的なツリーが欲しいだけです。ディレクトリツリーと考えてください。C5は見栄えがしますが、ツリー構造は、ノードの階層を表すよりも検索に適したバランスのとれた赤黒ツリーとして実装されているようです。

18
java.util.Setにget(int index)がないのはなぜですか?
正当な理由があると私は確信していjava.util.Setますがget(int Index)、誰かがインターフェイスやその他の同様のget()方法が欠けている理由を誰かに説明してもらえますか? セットは物を入れるのに最適のようですが、そこから1つのアイテムを取得するためのエレガントな方法が見つかりません。 最初のアイテムが必要なことがわかっている場合はを使用できますがset.iterator().next()、それ以外の場合は、特定のインデックスのアイテムを取得するために配列にキャストする必要があるようです。 セットからデータを取得する適切な方法は何ですか?(イテレータを使用する以外) それがAPIから除外されているという事実は、これを行わないことには十分な理由があることを意味します-誰かが私を啓発してくれませんか? 編集: ここでいくつかの非常に素晴らしい答え、そしていくつかは「より多くのコンテキスト」と言っています。特定のシナリオはdbUnitテストで、クエリから返されたセットには1つのアイテムしかないと合理的に主張でき、そのアイテムにアクセスしようとしました。 ただし、問題はより集中しているため、シナリオがなくてもより有効です。 セットとリストの違いは何ですか。 以下の素晴らしい答えをありがとう。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.