問題タブ [insertion-order]
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.
c++ - 挿入の順序を追跡する std::map ?
現在std::map<std::string,int>
、整数値を一意の文字列識別子に格納する があり、文字列を検索しています。挿入順序を追跡しないことを除いて、ほとんど私が望むことを行います。したがって、マップを反復して値を出力すると、文字列に従って並べ替えられます。しかし、(最初の)挿入の順序に従って並べ替えたいと思います。
代わりにa を使用することも考えましたが、文字列を調べて整数値を約 10,000,000 回インクリメントする必要があるため、aが大幅に遅くなるvector<pair<string,int>>
かどうかはわかりません。std::vector
使用方法はありますか、それとも私のニーズにより適したstd::map
別の容器はありますか?std
私は GCC 3.4 を使用しており、std::map
..
java - GWT AutoBeanへのシリアル化中にLinkedHashMapの順序を維持するにはどうすればよいですか?
Map
、HashMap
およびLinkedHashMap
を AutoBean ファクトリのタイプとして使用してみましたが、シリアル化した後は常に初期要素の順序が変更されています。
ArrayList
注文データを保持する追加を送信したくありません。AutoBean に順序を維持させる方法はありMap
ますか?
perl - 新しい行や更新された行のみを別のファイルに挿入する方法
Perlを扱い、すでにブロックされている最初の日:)
状況は次のとおりです。ファイルはフォルダーAで更新されますが、フォルダーB、C、Dにも存在します。簡単にするために、ファイルはすべてのフォルダーで異なる可能性があるため、差分を実行することはできません。他のファイルにコピーされることを意図した新しい行は、行の終わりにあるフラグ(たとえば、 #I )によって識別されます。
更新前のファイルは次のようになります。
更新後は次のようになります。
私がする必要があるのは、他のファイルで「2行目」を検索し、#Iでタグ付けされた行を挿入された順序で挿入してから、「5行目」を検索して「6行目#I」を挿入することです。 。
この例では、それらはすべて連続していますが、更新する必要のあるファイルでは、最初の更新ブロックと2番目(および3番目など)の間に複数の行が存在する可能性があります。
更新されるファイルは、shスクリプト、awkスクリプト、プレーンテキストファイルなどです。スクリプトは汎用であると想定されています。スクリプトには、更新されたファイルと更新されるファイルの2つのエントリパラメータがあります。
これを行う方法についてのヒントは大歓迎です。必要に応じて、これまでに使用したコードを提供できます。近いですが、まだ機能していません。
ありがとう、
João
PS:これが私がこれまでに持っているものです
得られた結果は、私が望むものとほぼ同じですが、まだです。
java - 順序を維持するリストの実装
List
提供されたものに基づいて順序を維持する Javaの既存の実装はありComparator
ますか?
次の方法で使用できるもの:
someT
に従ってリスト内の順序が維持されるように挿入されますcmp
(@andersojの提案で、もう1つのリクエストで質問を完了しています)
また、要素を削除せずにソートされた順序でリストをトラバースできるようにしたい、つまり:
通過する必要があります。
すべての提案は大歓迎です (Collections.sort
順序付けされていない完全なリストで使用するように私に指示することを除いて) が、現時点で新しいライブラリを導入するのは難しいため、java.*
最終的に何かを好むでしょう。org.apache.*
注: (UPDATE4)この種のリストの実装ではパフォーマンスが不十分になることに気付きました。2 つの一般的なアプローチがあります。
- Linked構造(一種の)Bツリーまたは類似のものを使用する
- 配列と挿入を使用する (二分探索あり)
いいえ 1. CPU キャッシュ ミスに問題があります。 いいえ 2. 配列内の要素のシフトに問題があります。
UPDATE2:
TreeSet
提供されたコンパレータ (MyComparator
) を使用して等しいかどうかをチェックし、それに基づいて要素が等しいと仮定してそれらを除外するため、機能しません。「一意性」フィルタリングではなく、順序付けのためだけにそのコンパレータが必要です(自然な順序付けによる要素は等しくないため)
UPDATE3:
「ソート」された順序でトラバースする方法がないためPriorityQueue
、(必要に応じて)機能しませんList
アップデート:
java - Java ListSet のどこか?
効率的なクエリとポジションのサブセット ビュー (サブリストなど) も可能にする広告掲載オーダー コレクションを探しています。これに対する最も簡単なオプションは、List のリンク リスト アプローチを採用し、ノードをマップ値として埋め込み、クラスのリスト インターフェイスの一部またはすべてを公開することです。
誰かがこれについてオラクルに愚痴をこぼしますか? ソートされたマップとセットに NavigableMap/Set を追加し、はるかに一般的な挿入順序に相当するものを持たない...
編集: LinkedHashSet を提案しないでください - 位置を照会したり、相対的なサブセットを実行したりする方法はありません。
sql - データのSQL順序
次の問題があります。私のサーバーでは、データを特定の順序で維持する必要があります(特定の挿入順序で)。そして、それはファイルに保存されなければなりません。私は現在SQLiteを使用してこれを行っていますが、SQL dbが挿入の順序を維持すると想定しても安全です。または、他の何かを使用する必要があります(この場合、何をすべきかについてのヒントを教えてください)。
binary-search-tree - 赤黒木の最悪の場合の黒の高さの挿入順序
1 ~ 15 のキーを扱っているとしましょう。通常の BST の最悪の場合のパフォーマンスを得るには、次のように昇順または降順でキーを挿入します。
1、2、3、4、5、6、7、8、9、10、11、12、13、14、15
次に、BST は本質的にリンクされたリストになります。
BST の最良のケースでは、次の順序でキーを挿入します。次に挿入されるキーが挿入される全範囲の半分になるように配置されているため、最初は 15/2 = 8、次に 8 になります。 /2 = 4 など...
8、4、12、2、6、10、14、1、3、5、7、9、11、13、15
その場合、BST は最適な高さ 3 のバランスの取れたツリーになります。
赤黒木の最良のケースは、BST の最良のケースでも構築できます。しかし、赤黒い木の最悪のケースをどのように構築すればよいのでしょうか? BSTの最悪のケースと同じですか?最悪のケースをもたらす特定のパターンはありますか?
scala - 高速ルックアップと挿入順序をサポートする永続的なデータ構造 (Scala)?
マップを扱うときは、要素が挿入されたのと同じ順序で反復できるマップを好む傾向があります。これにより、より決定論的でテストしやすくなります。この理由やその他の理由から、私は常に Java の LinkedHashMap の吸盤でした。
FP の世界では、ルックアップではマップよりもツリーが優先されます。確かに、Scala には ListMap と呼ばれる LinkedHashMap の不変バージョンがありますが、これはハッシュを使用しておらず、ほとんどの実用的な用途には遅すぎるようです。
不変性の利点を利用したい場合、挿入順序を記憶し、検索を高速化するデータ構造への渇望を満たすにはどうすればよいでしょうか? 誰かがどこかの図書館で何かを書いたことがありますか?
algorithm - B-Tree / 2-3-4 ツリー生成時の挿入順序
2-3-4 ツリーで挿入の順序がどのように重要であるかを知っている人はいますか? それともBツリー?
最小の高さの式は log m (k+1) のようで、m は最大数です。子の数で、k はキーの数です
最大高さの式は次のとおりです。log n ((k+1)/2) ここで、n は最小数です。内部ノードが持つことができる子の数。
しかし、実際にこれらの結果が得られるのは、どの挿入シーケンスですか?! 知らない。
2-3-4 ツリーの高さを最小限に抑えることが提案されています。たとえば、線形シーケンスの中央値を取得します。1,2,3,4,5,6,7,8 が 4 であり、それを挿入して、すすぎの前に、中央値の両側のサブリストについて繰り返します。これは本当ですか?もしそうなら、どのシーケンスが高さを最大化しますか?