問題タブ [linkedhashset]
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 - JavaHashSetでの要素の順序
2番目と3番目のセットが順序を保持するのはなぜですか。
これが私が得る出力です:
java - LinkedHashSet 内の一意の Java オブジェクト
値に従ってソートされた一意のキーと値のペアのトップ 5 リストを作成したいと考えています。
ハッシュマップを作成しようとしましたが、JSON から読み取った元のリストがソートされているため、ハッシュマップは最後の値を上書きするため、キーは最大値ではなく最小値になります。
解決策は、LinkedHashSet を使用して一意性を確保し、順序を維持することでした。しかし、キーと値のペアを保存しているので、新しいクラスを作成してオブジェクトとして保存することにしました。
私は同等のものを実装しなければならなかったことを知っていますが、明らかに比較は行われておらず、LinkedHashSet は一意ではありません。
私のコードは次のとおりです。
}
出力は次のとおりです。
[タイプ=君主 - 信頼度=79.447838、タイプ=君主 - 信頼度=58.911613、タイプ=君主 - 信頼度=56.614368、タイプ=創設者 - 信頼度=48.796387、タイプ=政治家 - 信頼度=38.921349、タイプ=王妃 - 信頼度=36.142864 ]
java - @IdClass LinkedHashSet を使用すると、重複したアイテムが含まれます
見積もり検索画面の作成を担当しました。見積もりモデルを作成するために Oracle ビューを参照しました。ビュー テーブルには id 列がないため、私は quoteId.class を介して @IdClass アノテーションを使用して複合 ID を使用することを好みます。両方のモデルで hashCode と equals メソッドをオーバーライドします。quoteId equals & hashcode はすべてのフィールドの組み合わせを返し、quote hashcode & equals は単にモデルの this.quoteNo フィールドを比較するだけです。
引用モデル:
そして、ユニークなアイテムが必要なときは、次の方法でアクセスしていました:
しかし、idClass の使用を開始すると、linkedHashSet にはすべてのアイテムが含まれており、引用番号も同じです。引用なしフィールド(比較可能、比較可能)を介して各アイテムの一意性を証明するための他の実装がありませんか?uniqueQuoteResult リスト項目の値をトレースすると、すべての項目の見積もり番号が同じになります。
編集注: Apache ライブラリの HashCodeBuilder と EqualsBuilder のサポートを使用する方法を変更しましたが、問題は変わりません。idClass ハッシュコードが linkedhashset に対して有効になっているのではないかと心配しています
java - LinkHashMap/LinkedHashSet での反復順序付けが、HashMap よりもパフォーマンスが少し低い理由
LinkedHashMap/Set は Collection へのエントリの順序を保持するため、パフォーマンスが少し低下します。なぜこれが起こるのか知りたいです。
java - HashSetとLinkedHashSetの違いは何ですか
私はそれLinkedHashSet
が拡張するのを見ました、HashSet
そして私はそれが秩序を維持することを知っています。
ただし、JDKのコードを確認すると、LinkedHashSet
constuctorのみが含まれており、実装は含まれていないようです。したがって、すべてのロジックはHashSet
?
それが正しければ、なぜそれはそのように設計されているのですか?非常に紛らわしいようです。
編集:質問に不幸な間違いがありました。HashMap
とLinkedHashMap
の代わりにHashSet
とを書きLinkedHashSet
ました。可能であれば、質問に答えて修正しました。
また、Java設計者がなぜそのように実装することを選んだのか興味がありました。
java - Java LinkedHashSet 後方反復
LinkedHashSet
最後のアイテムから最初のアイテムまでアイテムを反復処理するにはどうすればよいですか?
java - JavaLinkedHashSetインデックスの有効性
私はJavaコードの大部分をC++に移植してきましたが、LinkedHashSetのようなものを実装する必要がありました。Boostのマルチインデックスコンテナを使用して、LinkedHashSet/Mapの妥当な複製を作成しました。
コードを移植しているときに、multi_indexを使用していくつかの興味深いものに遭遇します。これは、含まれているオブジェクトが変更可能ではないためです(クラスの特定のフィールドを変更可能としてマークしない限り)。ただし、含まれているクラスのいくつかの可変メンバーからキーが計算される場合、物事は興味深いものになる可能性があります。
いくつかのことを明確にするために、Javaで簡単な例を書いてLinkedHashSetの動作を確認すると思いました。結果は私には少し驚くべきものです。含まれているオブジェクトが変更されてもインデックスが再生成されないという点で、Boostのマルチインデックスコンテナのように動作するようです(ご想像のとおり)。ただし、コンパイラはまったく文句を言いません---足元で自分を撃つのは非常に簡単なようです(私が移植しているコードは、それがまだどのように機能するかを知っている前述の罪を犯しているようです)。
これは、Javaにconst_iteratorsがないことの単なる制限ですか、それとも私は特に愚かでトリッキーなことをすることができましたか?
簡単な例を次に示します。
次のように出力されます。
興味深いことに、それはバズが変わったことを知っています。ただし、それでもBaz2は見つかりません。
明らかにこれは不自然ですが、私が見ている非常にもっともらしいコードは(複数の間接的な方法で)この問題を引き起こしているようです。Boost Multi Indexでは、少なくともこれを引き起こすにはイテレータをconst-castする必要があります!
java - JavaでLinkedHashSetから1つの要素を取得するには?
特定のセットをバラバラのサブセットに分割するコードを書きたいと思っています。たとえば、サッカー選手のセットを、所属するチームに応じて分割します。最後に、代表者のリスト、つまり各チームから 1 人のプレーヤーが必要です。
すべてのサッカー選手は、チームの他のすべての選手を知っています。これは、複雑さに非常に関連しています。したがって、これを行う方法に関する私の現在の考えは次のとおりです(set
現在の場所は ですLinkedHashSet<T>
):
ただし、while ループのすべてのステップで新しい反復子を作成するのは奇妙に感じます。LinkedHashSet は、(LinkedList の動作のために) 内部で何らかのfirstElement()
機能を持っているはずですが、何らかの理由でこれを行う方法が見つかりません。代わりに foreach ループも試しましたが、java.util.ConcurrentModificationException
.
これを正しく行うにはどうすればよいですか?
java - 順序付けられたコレクションのすべての削除の孤立を休止状態にする
みたいな関係を持っています。
私のJavaコードでは、これに対して実行されるセットがありました
現在、この SomeBeans はlinkedHashmapであるため、順序は維持されましたが、カスケードで使用されているすべての孤立した削除のため、特定のシナリオで次のように例外が発生していました:
だから私は上記のJava実装を
ただし、これを行うと、linkedHashMap SomeBeans からの注文を維持できません。
誰かがそのような問題に直面したことはありますか?
よろしく、
バイバブ