問題タブ [collections]
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 - コレクション内のアイテムを逆順で印刷しますか?
私のData Structures and Problem Solving using Java bookに次の問題があります。
コレクション API を使用して任意のコレクション内の項目を逆順に出力するルーチンを作成します。ListIterator は使用しないでください。
誰かに宿題をやってもらいたいので、ここに書いているのではありません。コードを書くように求められていることを正確に理解できないようです!
「ルーチン」を書くように頼まれたとき、それは単一のメソッドを探していますか? さまざまな種類のコレクション (リンクされたリスト、キュー、スタック) のすべてに対して単一のメソッドを機能させる方法がよくわかりません。
誰かが私を正しい方向に導くことができれば、私はそれを大いに感謝します.
.net - さまざまな種類の.NETリストについてどこで知ることができますか?
C#で利用できるさまざまな種類のリストと、それらの使用法が適切な場合を簡潔に説明するための優れたリソースを知っている人はいますか?
たとえば、リスト、ハッシュテーブル、辞書など。
いつ何を使うべきかよくわかりません。
c# - KeyedCollection のキーに int を使用しても問題ありませんか
多くの場合、数値識別子を持つ非順次オブジェクトのコレクションが必要です。これには KeyedCollection を使用するのが好きですが、重大な欠点があると思います。キーに int を使用すると、コレクションのメンバーにインデックスでアクセスできなくなります (コレクション [インデックス] は実際にはコレクション [キー] になります)。これは、キーとして int を使用することを避けるのに十分深刻な問題ですか? 好ましい代替手段は何ですか?(おそらく int.ToString()?)
以前は大きな問題なくこれを実行しましたが、最近、.NET のバグが原因で、キーが int の場合、KeyedCollection に対する XML シリアル化が機能しないという厄介な障害に遭遇しました。
c# - ジェネリックとそのインターフェイスについてのあなたの最高のリソースは何ですか?
IEnumerator、IEnumerable、ICollection、IListおよびそれらの一般的な対応物に関する多くのドキュメントと推奨事項を見つけました。悲しいことに、インターフェイスの階層全体、それらのインターフェイスの一般的な実装、およびそれらの各タイプの最適な使用法を説明するチュートリアルや本はまだ見つかりませんでした。
ジェネリック、そのインターフェイス、および C# でのジェネリックの推奨される使用例について、最もよく知っている情報源は何でしたか?
java - ArrayList から繰り返し要素を削除するにはどうすればよいですか?
がありArrayList<String>、そこから繰り返される文字列を削除したいと考えています。これどうやってするの?
java - ソートされたインデックスを、ソートしているコレクションの元のインデックスにマップする方法
左右に並べ替える必要があるコレクション (List<Rectangle>) があります。その部分は簡単です。次に、元の順序でRectangles を反復処理したいのですが、並べ替えられたコレクションでインデックスを簡単に見つけることができます。多数の等しいオブジェクトがある可能性があるため、indexOf() は機能しません。これを行う簡単な方法があるはずだと感じずにはいられません。
c# - コレクションからアイテムを削除する最良の方法
アイテムが既知であるがインデックスではない場合、C#でコレクションからアイテムを削除するための最良の方法は何ですか? これは 1 つの方法ですが、せいぜい非エレガントに思えます。
私が本当にやりたいことは、コレクション全体をループせずに、2 つの追加変数を使用せずに、プロパティ (この場合は名前) で削除する項目を見つけることです。
java - 同時にアクセスされるリストにJava6で使用するための最良のアプローチ
複数のスレッドからアクセスされているListオブジェクトがあります。ほとんどの場合、リストを更新するスレッドが1つあり、状況によっては2つのスレッドがあります。処理されているユーザー要求の数に応じて、このリストから読み取ることができるスレッドは1つから5つあります。このリストは、実行するタスクのキューではなく、同時に取得および更新されるドメインオブジェクトのリストです。
このリストへのアクセスをスレッドセーフにする方法はいくつかあります
。-同期ブロックを使用する
-通常のロックを使用する(つまり、読み取り操作と書き込み操作が同じロックを共有する)-ReadWriteLock
を
使用する-新しいConcurrentBLABLBAコレクションクラスの1つを使用する
私の質問:
重要なセクションには通常多くの操作(ほとんどの場合、リストから要素を追加/削除/挿入または取得するだけ)が含まれていないことを考えると、使用するのに最適なアプローチは何ですか?
上記にリストされていない別のアプローチをお勧めできますか?
いくつかの制約
-最適なパフォーマンスが重要であり、メモリ使用量はそれほど多くありません-ソートされたリストではありませんが(つまり、ComparableまたはComparatorを使用してソートされていないが、挿入順序に従って) 、
順序付けられたリスト(現在はArrayList
で同期されている)である必要がありますリストは大きく、最大100000のドメインオブジェクトが含まれるため、CopyOnWriteArrayListのようなものを使用することはできません
-書き込み/更新の循環セクションは通常非常に高速で、単純な追加/削除/挿入または置換(設定)
を実行します-読み取り操作は主に実行されますelementAt(index)はほとんどの場合呼び出しますが、一部の読み取り操作はバイナリ検索またはindexOf(element)を実行する場合があります。
-indexOf(..)のような操作はリストをトラバースしますが、リストに対する直接の反復は行われません。
c# - C# で基本クラスから派生クラスのプロパティにアクセスする
C# で、ジェネリック リストに基本クラスのみが含まれている場合、派生クラスのプロパティにアクセスする最良の方法は何ですか?
java - 外部インターフェースが HashMap に hashCode/equals を提供することを許可しないのはなぜですか?
を使用TreeMapして custom を提供するのは簡単です。したがって、マップに追加されたオブジェクトComparatorによって提供されるセマンティクスをオーバーライドします。ただし、この方法では制御できません。ハッシュ値と等価性チェックを提供する関数は「サイドロード」できません。ComparableHashMap
HashMapインターフェイスを設計し、これを(または新しいクラスに)改造するのは簡単で便利だと思いますか?より良い名前を除いて、このようなもの:
大文字と小文字Mapを区別しない問題には、簡単な解決策があります。
これは実行可能でしょうか、それともこのアプローチに根本的な問題があると思いますか?
このアプローチは、既存の (JRE 以外の) ライブラリで使用されていますか? (グーグルを試してみましたが、うまくいきませんでした。)
編集: hazzen によって提示された素晴らしい回避策ですが、これは私が回避しようとしている回避策です... ;)
編集: タイトルを変更して、「コンパレーター」について触れないようにしました。これは少し混乱したと思います。
編集:パフォーマンスに関連して受け入れられた回答。より具体的な答えが欲しいです!
編集: 実装があります。以下の受け入れられた回答を参照してください。
編集:最初の文を言い換えて、それが私が求めているサイドローディングであることをより明確に示します(順序付けではありません。順序付けは HashMap に属しません)。