問題タブ [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 - Java 2 つの Set オブジェクト - hashCode() は同じですが、.equals() は失敗します
hashCode() および equals() メソッドをオーバーライドするカスタム オブジェクトの 2 つのセット (LinkedHashSet) があります。
これら 2 つのセットを比較すると、ハッシュ コードが同じであっても equal() メソッドは失敗します。
これは以下を返します:
cmContacts.equals(cm2Contacts):false
cm2Contacts.equals(cmContacts):false
ハッシュコードの比較:true
ドキュメントによると、ハッシュ コードが同じ場合、equals メソッドは true を返す必要があります。
セットのハッシュ コードは、セット内の要素のハッシュ コードの合計と定義されます。ここで、null 要素のハッシュ コードはゼロと定義されます。これにより、s1.equals(s2) は、Object.hashCode() の一般的な規約で要求されるように、任意の 2 つのセット s1 および s2 に対して s1.hashCode()==s2.hashCode() を暗示します。
https://docs.oracle.com/javase/7/docs/api/java/util/Set.html#equals(java.lang.Object)
なぜこれが起こっているのですか?
java - LinkedHashset を日時でソートする
私は次のLinkedHashsetを持っています
追加時に多くの重複エントリがあり、これを防ぐため、LinkedHashset と同じです。
LinkedHashsetをソートするにはどうすればよいですか
java - LinkedHashSet - 挿入順序と重複 - 最新のものを「一番上」に保つ
挿入順序を保持し、一意の値を持つコレクションが必要です。LinkedHashSet は進むべき道のように見えますが、1 つの問題があります。2 つの項目が等しい場合、最新のものを削除します (これは理にかなっています)。以下に例を示します。
はLinkedHashSet
印刷されます:
one
、two
、three
しかし、私が必要とするのは:
one
、three
、two
ここで最善の解決策は何ですか?これを行うことができるコレクション/コレクションメソッドはありますか、それとも手動で実装する必要がありますか?
java - LinkedHashSet 要素を挿入順に取得し、ローカル変数に保存する
挿入されたのと同じ順序で要素を取得する必要があるlinkedhashsetがあります。取得するには、要素を正確な挿入順序で取得しています。
インデックスで取得するためにlinkedHashsetをListに変換しますが、リストに変換すると要素がシャッフルされて順序が変更されるのではないかと心配しています
リストは順序を保持しないため、リストに変換することは、最初に挿入順序でそれらを取得するという私の主な目的を放棄することです。
ここで別の方法または私の間違いを教えてください。
java - LinkedHashSet の最後の 5 つの要素のサブリストを取得しますか?
LinkedHashSet の最後の 5 つの要素を新しい LinkedHashSet で取得するためのライナーはありますか?
これは私が現在持っているものですが、あまり効率的ではありません:
または、この場合、 TreeSet 、 SortedSet 、 HashSet を使用する必要がありますか?
java - Java - 重複をフィルタリングする HashSet (XSSFCell)
重複を含むリストがあり、それらを削除する必要があります。私のリストは次の形式です
List 'results' に格納されるデータのサンプルは次のとおりです。
- [ABC、123、2016 年 4 月 22 日]
- [DEF、456、2016年4月22日]
- [ABC、123、2016 年 4 月 22 日]
- [ABC、123、2016 年 1 月 10 日]
このリンクに基づいて、以下のコードを試しました:
予想される出力は次のとおりです。
- [ABC、123、2016 年 4 月 22 日]
- [DEF、456、2016年4月22日]
- [ABC、123、2016 年 1 月 10 日]
ただし、重複を削除するわけではなく、リスト全体がセットに保存されます。直面している問題が明確であることを願って、ガイダンスを求めてください。
java - 最も単純で最小限のデータ構造を使用して、LFU キャッシュをどのように実装できますか?
私はインタビューでこの質問をされました。彼は最初に LRU と LFU の違いについて尋ね、次に両方を実装するように求めました。LinkedHashMap を介して LRU を実装できることは知っていましたが、LFU と混同してしまいました。説明がわかりやすい最も単純なデータ構造で実装する方法を教えてもらえますか? また、LinkedHashMap でも実装できますか?
list - Java: LinkedHashSet を返す
基本的に、Java で文字列のコレクションを返そうとしています。しかし...
- 現在のフォルダー内のすべての「.db」ファイルの名前であるため、各文字列は一意である必要があるため、このコレクションは LinkedHashSet である必要があると考えました。
- 要素 (ファイル名) はまったく同じ順序を維持する必要があるため、コレクション内の順序番号によってそのうちの 1 つを選択できます。
メイン ルーチンは、このコレクションを GUI コンポーネント (おそらく JList) に表示し、ユーザーがそれらのいずれかを選択できるようにします (.db 拡張子なし)。私は完全に初心者なので (ご覧のとおり)、LinkedHashSet よりも優れたオプションがあると思われる場合は教えてください。
また、メインクラスでこのコレクションを取得するにはどうすればよいですか?
私がこれまでに持っているもの:
java - 実行時リストから重複する文字列を削除します
この関数が重複した文字列をリストから削除しない理由がわかりません。