問題タブ [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.

0 投票する
6 に答える
6206 参照

python - セットデータをPythonに保存する最良の方法は何ですか?

次の形式のデータのリストがあります。

[(id\__1_, description, id\_type), (id\__2_, description, id\_type), ... , (id\__n_, description, id\_type))

データは、同じグループに属するファイルからロードされます。各グループには、同じ ID が複数存在する可能性があり、それぞれが異なるファイルから取得されます。重複は気にしないので、これをすべて格納する良い方法は Set 型に入れることだと思いました。しかし、問題があります。

同じ ID でも、次のように説明が若干異なる場合があります。

IPI00110753

  • チューブリン α-1A チェーン
  • チューブリン α-1 鎖
  • αチューブリン1
  • α-チューブリン アイソタイプ M-α-1

(この例はuniprot タンパク質データベースから取得したことに注意してください。)

説明が異なっていても構いません。私が使用しているタンパク質データベースには、特定の識別子のリストが含まれていない可能性があるため、それらを捨てることはできません. これが発生した場合、人間が読める説明を生物学者に表示できるようにして、彼らが見ているタンパク質を大まかに知ることができるようにしたいと考えています.

現在、辞書型を使用してこの問題を解決しています。ただし、このソリューションは多くのメモリを使用するため、あまり好きではありません (これらの ID が多数あります)。これはそれらの中間のリストにすぎません。ID がデータベースに配置される前に、いくつかの追加処理が行われるため、データ構造を小さく保ちたいと考えています。

本当に2つの質問があります。まず、これには (辞書型よりも) Set 型を使用してメモリ フットプリントを小さくするか、またはリストに挿入するたびに ID が存在するかどうかを確認するソート済みリストを使用するか、または私が考えていなかった3番目の解決策は?第二に、セット型がより良い答えである場合、タプル全体ではなく最初の要素だけを見るようにキーを設定するにはどうすればよいですか?

私の質問を読んでくれてありがとう、
ティム

アップデート

私が受け取ったコメントのいくつかに基づいて、少し明確にさせてください。私がデータ構造で行うことのほとんどは、データ構造への挿入です。1 回は追加情報で注釈を付けるため、もう 1 回はデータベースに挿入するためです。ただし、データベースに挿入する前に追加の注釈が行われる場合があります。残念ながら、現時点でそれが起こるかどうかはわかりません。

現在、ハッシュテーブルに基づいていない構造(つまり、辞書)にこのデータを格納することを検討しています。私は新しい構造が挿入時にかなり迅速であることを望んでいますが、実際には2回しかやらないので、それを読むことは線形になる可能性があります. スペースを節約するために、ハッシュ テーブルから離れようとしています。より良い構造がありますか、それともハッシュテーブルはそれと同じくらい良いですか?

*情報は、uniprot を照会して取得した Swiss-Prot タンパク質識別子のリストです。

0 投票する
13 に答える
166242 参照

c# - .Net データ構造: ArrayList、List、HashTable、Dictionary、SortedList、SortedDictionary -- 速度、メモリ、およびそれぞれをいつ使用するか?

.NET には多くの複雑なデータ構造があります。残念ながら、それらのいくつかは非常によく似ており、あるものをいつ使用し、いつ別のものを使用するかは常にわかりません. 私の C# と VB の本のほとんどは、それらについてある程度説明していますが、実際の詳細についてはまったく触れていません。

Array、ArrayList、List、Hashtable、Dictionary、SortedList、SortedDictionary の違いは何ですか?

列挙可能なものはどれですか (IList -- 'foreach' ループを実行できます)? キーと値のペア (IDict) を使用するのはどれですか?

メモリフットプリントはどうですか?挿入速度?取得速度は?

言及する価値のある他のデータ構造はありますか?

メモリ使用量と速度 (Big-O 表記法) の詳細についてはまだ調査中です。

0 投票する
5 に答える
4639 参照

c# - C# の 2D データ構造

C# で 2D データ構造を作成する際に使用するアプローチを決定するのに役立つリソースを探しています。

0 投票する
3 に答える
2121 参照

c# - C# の LinkedList から特定の条件に一致する要素を削除するにはどうすればよいですか?

Entry に id というメンバーが含まれる LinkedList があります。id が検索値と一致するリストからエントリを削除したい。これを行う最善の方法は何ですか?Entry.Equals は他のメンバーを比較するため、Remove() は使用したくありません。ID のみを照合したいのです。私はこのようなことをしたいと思っています:

編集:誰かが私のためにこの質問を再開できますか? 重複ではありません - 重複であるはずの質問は List クラスに関するものです。List.RemoveAll は機能しません - これは List クラスの一部です。

0 投票する
4 に答える
1307 参照

javascript - Perl データ構造を JavaScript 構造に変換するための Perl モジュールはどこにありますか?

Perl データ構造を JavaScript 構造に変換するための Perl モジュールはどこにありますか?

たとえば、これは私のコードです(メイソン):

これのためのモジュールはありますか?

0 投票する
2 に答える
150 参照

oop - タスクのリストを並べ替えるのに最適な場所

プロセス管理アプリである Web アプリケーションを構築しています。いくつかの異なるタイプの従業員に対して、実行するタスクのリストが表示されます。各従業員がタスクを完了すると、次の従業員に引き継がれます。

タスク階層は、バッチ > ロード > アセンブリ > パーツ > タスクです。現在、従業員タイプごとに最初に取り組むべきタスクを決定するための 8 つのルールがあります。これらの規則はパーツのサイズに適用され、そのパーツの完成が階層にどのように影響するかにも適用されます。たとえば、パーツ A が完成した場合、バッチ全体が完成しますが、パーツ B はそうではなく、そのバッチには完成すべき他のパーツが残っているためです。

とにかく、それはシステムがどのように機能するかのエレベーターピッチです. 私が理解しようとしているのは、ルールが変更される可能性があり、さらにルールが追加される可能性があることを念頭に置いて、これを行うための効率的で高速で保守可能な方法です。

当初、私は DB (SQL 2005) にすべての面倒な作業を任せるつもりでしたが、より複雑なルールを DB で実装するのが難しいのではないかと心配しています。そのため、別の方法として、タスクのリストを中間層に引き出し、オブジェクトのコレクションを作成し、各ルールをコレクションに適用します。各ルールを分離して T-SQL に変換できることは間違いありませんが、タスクの種類に応じて最大 8 つの基準で並べ替えるのは、かなり面倒に感じます。

中間層のアプローチで私が見ることができる1つの利点は、タスクフローを変更できる、より緩く制限されたシステムを作成できることです。これは、DBではより難しいと思います。

それで、あなたは何をお勧めしますか?私が考えていない3番目の選択肢はありますか?

編集[1]これをもう少し修飾するために、DBは私が最初に開発したものから変更されることは期待されていません.

0 投票する
5 に答える
915 参照

c++ - Windows で最速の小さなデータストア

私のアプリは、約 1000 個のオブジェクトの状態を追跡しています。これらのオブジェクトは、特定の順序で永続ストア (シリアル化) から読み取られ、永続ストアに書き込まれます。

現在、アプリはレジストリを使用して各オブジェクトの状態を保存しています。これは次の理由で優れています。

  • 簡単です

  • とても速いです

  • 個々のオブジェクトの状態は、より大きなエンティティを読み取る必要なく読み書きできます (大きな XML ファイルからスニペットを引き出すなど)。

  • 個々のアイテムを簡単に操作できる適切なエディター (RegEdit) があります。

そうは言っても、もっと良い方法があるかどうか疑問に思っています。SQLite は可能性のように思えますが、レジストリで得られるのと同じレベルのマルチリーダー/マルチライターはなく、既存のエントリを編集する簡単な方法もありません。

より良い提案はありますか?フラットファイルの束?

0 投票する
7 に答える
3205 参照

.net - 文字列キーまたは数値インデックスによるルックアップに最適な.NETのデータ構造は何ですか?

文字列キーまたはインデックスによって値を取得できる(パフォーマンスと使いやすさのための)最も理想的なデータ構造を探しています。インデックスで実際に取得できないため、辞書は機能しません。何か案は?

0 投票する
5 に答える
303 参照

c# - valueTypes フィールドとボックス化を持つクラス

私はジェネリックを試していて、Dataset クラスに似た構造を作成しようとしています。
次のコードがあります

問題は、新しい列を追加するときに、HasChanges プロパティと AcceptChanges() メソッドにも追加する必要があることです。これは、いくつかのリファクタリングを要求するだけです。
だから私の頭に浮かんだ最初の解決策は次のようなものでした:

コメントからわかるように、ここでは構造体の複製に関する問題はほとんどありません。これに対する簡単な解決策は、Column をクラスに変更することですが、私のテストでは、(各オブジェクトのメタデータのために) メモリ使用量が ~40% 増加するようで、これは私には受け入れられません。

私の質問は次のとおりです。さまざまな構造化オブジェクト/レコードで機能するメソッドを作成する方法を他に考えている人はいますか? F# コミュニティの誰かが、このような問題が関数型言語でどのように解決され、パフォーマンスとメモリ使用量にどのように影響するかを提案できるかもしれません。

編集:
sfg マクロに関する提案に感謝します。
Visual Studio 2008 には、T4 と呼ばれる組み込みの (しかしあまり知られていない) テンプレート エンジンがあります。全体のポイントは、「.tt」ファイルをプロジェクトに追加し、すべてのクラスを検索するテンプレートを作成し、レコードであるクラスを何らかの方法で認識し (たとえば、実装するインターフェイスによって)、HasChanges および AcceptChanges( ) クラスに含まれる列のみを呼び出します。

いくつかの便利なリンク:
VS ブログの T4 エディター ( EnvDTE を使用してプロジェクト ファイルを読み取る例を含む
T4 ブログ エントリに関するリンクとチュートリアルを含む)

0 投票する
3 に答える
1243 参照

c# - pthread_cond_t の EventWaitHandle の動作

私は最近、C# での EventWaitHandle の強力な動作の光を見て、同じことを行うために姉妹アプリケーションの一部の機能を移動することにしました。唯一の問題は、姉妹アプリが C で記述されていることです。

大したことではありません。シグナルを許可する pthread_cond_t データ型を持つ pthreads を使用しています。私の唯一の質問は、何かが待っている前に条件を「通知」することは可能ですか?

現在、私のテストではノーと言われています。つまり、ThreadB が待機する前に ThreadA がシグナルを起動すると、ThreadB は無期限に待機します。C# の EventWaitHandle の機能により近い動作をする、使用できる別の pthread タイプはありますか? オブジェクトはシグナル状態です。これは、オブジェクトを待機する最初のスレッドがすぐに渡され、シグナルなしに設定されることを意味します。

pthread_cond を別のデータ構造にラップすることは、これを達成するのにそれほど難しくありません。繰り返しになりますが、この機能は pthread ライブラリで既に利用可能ですか?