問題タブ [set]
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 - ArrayList よりも HashSet を使用して意図を伝えますか?
要素の Collection を作成する必要があると想像してください。順序が重要であるかどうかは関係ありません。私が実際に計画しているのは、イテレータを使用することだけです。ほとんどの同僚が ArrayList と LinkedHashSet/HashSet を使用していることに気付きました。私の質問は、これらの要素が一意であることがわかっている場合、セットまたはリストを使用する必要があるかどうかです。効果的には違いはありませんが、要素が一意であることを Set の方が効果的に伝えていませんか?
いくつかの理由から、これは大規模なエンタープライズ アプリケーションにとって興味深い質問だと思います。1) コード全体の品質を保証できない場合、Set の使用は危険な場合があります。なんで?equals() と hashcode が誤ってオーバーライドされる可能性があるため、 Set を使用すると、非常に厄介な問題が発生する可能性があります。2) リストを使用すると、将来の変更に対する回復力が高くなります。なんらかの理由で複製が可能になったとしても、心配する必要はありません。
基本的には、次のようになります。一意の要素を期待する必要があることがわかっている場合、すべての場合にリストよりもセットを優先する必要がありますか?
編集:私も尋ねていると思います:重複が追加されないようにするために Set を使用する必要がありますか、または理解を容易にするために重複が存在しないことを示すためだけに使用できますか?
unix - 文字列セットの交差または外れ値を見つけるためのUnixコマンド?
と同等のUNIXコマンドはありますか
文字列セットの交差または「外れ値」を検索します。
アプリケーションの例:htmlテンプレートのリストがあります。中には{%load i18n%}文字列が含まれているものと、含まれていないものがあります。どのファイルがそうでないか知りたいです。
編集: grep-Lは上記の問題を解決します。
これはどう:
file1:
file2:
%intersect file1 file2
%left-unique file1 file2
python - リストからリストを更新するアルゴリズム
オブジェクトとそのプロパティのリストを提供するデータ ソースがあります (CSV ファイルですが、それは問題ではありません)。プログラムを実行するたびに、オブジェクトのリストの新しいコピーを取得し、それをデータベースに保存されているオブジェクト (およびそのプロパティ) のリストと比較し、必要に応じてデータベースを更新する必要があります。
新しいオブジェクトの取り扱いは簡単です。データ ソースは各オブジェクトに連続した ID 番号を与え、新しい情報の先頭の ID 番号をデータベースと照合するだけで完了です。オブジェクトのプロパティの一部が変更された場合、またはオブジェクトが削除された場合など、他のケースに対する提案を探しています。
単純な解決策は、データベースからすべてのオブジェクトを取得し、2 つのセット (古いものと新しいもの) の交点の補数を取得してから、それらの結果を調べることですが、セットが取得されるとあまり効率的ではないように思われます大きい。何か案は?
java - servletconfig または servletContext オブジェクトに init パラメータを設定する方法はありますか?
ServletContext または ServletConfig のいずれかで init-parameter 値を変更したい場合。サーブレットがコンテナによって破棄された後に更新する必要があります。何か方法はありますか?
c# - C#でHashSetを持っているのにSetを持っていないのはなぜですか?
古い質問
私の理解では、C# には何らかの意味HashSet
とset
型があります。私は何を理解していHashSet
ます。しかし、なぜset
別の単語なのですか?すべてのセットが ではないのはなぜHashSet<Object>
ですか?
新しい質問
Set
型と同様に、C# にジェネリック型がないのはなぜDictionary
ですか? 私としては、検索・追加・削除の性能が標準的なセットが欲しいところです。それがハッシュで実現されているか、他の何かで実現されているかはあまり気にしません。では、実際にHashSet
はこのバージョンの C# では として実装されるが、将来のバージョンでは多少異なるセット クラスを作成してみませんか?
または、少なくともインターフェースではないのはなぜISet
ですか?
答え
以下に回答してくれたすべての人に感謝しICollection
ますISet
。ただし、私の観点からは、セットが列挙可能である必要はありませんが、ICollection
実装IEnumerable
します --- 例: 1 と 2 の間の実数のセット (さらに、セットは動的に生成できます)。「普通のプログラマー」が無数のセットを必要とすることはめったにないので、これはマイナーな暴言であることに同意します。
わかりました、私はそれを理解したと思います。HashSet
は絶対に呼び出されることを意図していましSet
たが、この単語Set
はある意味で予約されています。より具体的には、.NET アーキテクチャの作成者は、さまざまな言語に対して一貫性のある (原文のまま!) クラスのセットを持ちたいと考えていました。これは、標準クラスのすべての名前が .NET 言語のキーワードと一致してはならないことを意味します。ただし、という単語Set
は、実際には大文字と小文字を区別しない VB.NET で使用されているため (そうですか?)、残念ながらそこには操作の余地がありません。
謎が解けました:)
エピローグ
Alex Y. による新しい回答は、次の .NET 4.0 インターフェイスについて説明しているMSDN ページへのリンクISet
ですHashedSet
。ハッピーエンド。
vb.net - プロパティのプロパティを設定できません
私が言ったように、プロパティのプロパティを設定するのに問題があります。トランザクションを表すクラスがあるとしましょう。私のクラスには、次のような別のクラスを表すプロパティがあります。
したがって、基本的に、適切な人を取得する取得フィルターを持つプロパティがあります。問題は、プロパティを介して Person の情報を設定したい場合、VB は私がそれを行ったことを無視しているように見えることです。たとえば、次のようになります。
しかし、これに時計を付けると、プロパティを設定した後、私の値は変わりません。私はこの行動に困惑しています。私が間違っていることはありますか?ありがとう!
java - セットとリストの違いは何ですか?
Set<E>
とList<E>
インターフェイスの根本的な違いは何ですか?
python - 動的ビューを実装する簡単な方法は?
View はPython 3の便利な構造です。(私のように) 気付かなかった人のために: 辞書d
を書くことができ、変数k = d.keys()
を更新しても、更新されたキーが引き続き提供されます。あなたはそれから書くことができ、それは常にあなたに与えるでしょうd
k
k1 & k2
d1.keys() & d2.keys()
これを個人の todo マネージャーに実装したいのですが、複雑なビューをdynamicにしたり、遅延評価したりしたいと考えています。つまり、 と呼ばれるいくつかのビューがso
ありpost
、次のpriority
ように記述できるようにしたいと考えています。
後で が呼び出されたときに、その__repr__(now)
時点でのみ評価が実行されるようにします。
私が最初に考えたのは、論理演算子をオーバーロードすることだったので、それ自体が 2 つのサブビューの合成であることを記憶し、計算時にそれらにView.__and__
適用される新しいビューを作成するように変更しました。&
しかし、かなり多くの論理演算子があるように見えるので、正しいことを行っているかどうかはわかりません。
それを助ける標準ライブラリクラスはありますか?プロセスを簡素化するにはどうすればよいですか?
java - **equals** in Set インターフェイス
同じ要素が含まれている場合、Set
2 つのインスタンスは等しいことがわかっていますが、同じ要素を 2 つの異なるセットに含めることは可能ですか (インターフェイスには重複した要素を含めることはできません)。Set
java - このステートメントはどういう意味ですか?
私はJavaの初心者でありif(!s.add(a))
、このコードの抜粋で何を意味するのか理解していません。