問題タブ [data-structures]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - Java: 配列とベクトル
私はPHPでの作業に慣れていますが、最近はJavaで作業しており、これを理解しようとして頭痛がしています。この表現をJavaで保存したい:
このことをJavaで保存するためのクリーンな方法(つまり、汚いコードがない)はありますか? ノート; 文字列を配列インデックスとして (最初の次元で) 使用したいのですが、配列の明確なサイズがわかりません..
java - ツリー (有向非巡回グラフ) の実装
次のようなツリー/有向非巡回グラフの実装が必要です。
- いかなる種類のソートもありません。
- これ
TreeNode
は、キーと可能な値の単なるラッパーです (ノードに値を設定する必要はありません)。 - 親と子の両方へのリンクが必要です。
私のためにこれを行う標準APIやコモンズなどに何かありますか?
私はそれを自分で書いてもかまいません (そして、私は確かに皆さんにそうするように求めているわけではありません) 私は車輪の再発明をしたくないだけです.
data-structures - 裏返しに知っておくと最も役立つデータ構造は何ですか?
私は、人々がプログラミングにおいて知っておくべき最も有用なデータ構造と考えるものを見つけることに興味があります。いつも使用しているデータ構造は何ですか?
この投稿への回答は、問題に役立つデータ構造を見つけることに関心のある新しいプログラマーに役立つはずです。回答には、おそらくデータ構造、それに関する情報または関連するリンク、それが使用されている状況、およびこの問題に適している理由 (例: 理想的な計算の複雑さ、単純さと理解など) を含める必要があります。
各回答は、1 つのデータ構造のみに関するものである必要があります。
人々が共有できる知恵と経験の真珠に感謝します。
c# - 配列内のアイテムをシフトする方法は?
時間に敏感なアイテムの配列があります。一定の時間が経過すると、最後のアイテムが脱落する必要があり、新しいアイテムが最初に配置されます。
これを行う最善の方法は何ですか?
c++ - ディスクでバックアップされた STL コンテナー クラスですか?
私は STL を使用してアルゴリズムを開発することを楽しんでいますが、データ セットがヒープに対して大きすぎるという問題が繰り返し発生します。
私は、STL コンテナーと、ディスクに支えられたアルゴリズム、つまりヒープではなくディスクに格納されたデータ構造のドロップイン代替品を探していました。
最近、友人が私にstxxlを指摘しました。私がそれに関与する前に... 私が検討すべき他のディスクでバックアップされた STL の代替品はありますか?
注: 永続性や組み込みデータベースには興味がありません。boost::serialization、POST++、Relational Template Library、Berkeley DB、sqlite などについては言及しないでください。私はこれらのプロジェクトを認識しており、目的に適した場合に使用しています。
更新: 何人かの人々がメモリ マッピング ファイルとカスタム アロケータの使用について言及していますが、良い提案です。つまり、カスタム アロケーター アプローチは機能しない可能性があります。
.net - .Net ディクショナリでエントリが加算されるのはなぜですか?
私はちょうどこの行動を見たばかりで、少し驚いています...
Dictionary に 3 つまたは 4 つの要素を追加し、「For Each」を実行してすべてのキーを取得すると、追加したのと同じ順序で表示されます。
これが私を驚かせた理由は、 Dictionary が内部的に HashTable であると想定されているため、物事が任意の順序で出てくることを期待していたからです (キーのハッシュ順ですよね?)
ここで何が欠けていますか?これは私が信頼できる行動ですか?
編集: OK、私はこれが起こる理由の多くをすでに考えていました(エントリへの別のリスト、これが偶然かどうかなど)。私の質問は、これが実際にどのように機能するか知っている人はいますか?
c# - C ++ std :: pairのC#アナログとは何ですか?
私は興味があります:std::pair
C ++でのC#のアナログは何ですか?クラスを見つけましSystem.Web.UI.Pair
たが、テンプレートベースのものがいいと思います。
ありがとうございました!
arrays - 配列対連結リスト
配列に対してリンクリストを使用したいのはなぜですか?
リンクリストのコーディングは、間違いなく、配列を使用するよりも少し手間がかかり、追加の作業を正当化するものは何か疑問に思うかもしれません。
リンクリストでは新しい要素の挿入は簡単だと思いますが、配列では大変な作業です。リンクされたリストを使用して一連のデータを格納することと、配列に格納することには他に利点がありますか?
この質問は一般的なデータ構造に関係しているのに対し、他の質問は特定のJavaクラスについて具体的に尋ねているため、この質問はこの質問の複製ではありません。
serialization - インメモリデータ構造に耐久性を追加する
メモリ内のデータ構造に耐久性を追加するために採用できる一般的な手法のいくつかは何ですか(つまり、プロセスがクラッシュした場合、そのデータ構造で以前に実行されたすべての操作を保持できますか?
データ構造にタプルのリストだけが含まれている場合は、それらをSQL DBに格納するだけで、耐久性が無料になります。しかし、私のデータ構造がグラフまたはツリーだった場合はどうなりますか?
私が考えることができる1つのことは、すべての操作をディスクに明示的にログに記録し(追加のみのログ)、クラッシュが発生した場合は、ログを再生して前の状態を保持することです。ログが大きくなりすぎると、圧縮ステップが発生します。これは、データベースエンジンが耐久性のために内部的に行うことだと思います(チェックポイントはこのプロセスと呼ばれるものです)?
ところで、これはデータセット全体がメモリに収まらないシナリオではないことに注意してください。