タグ付けされた質問 「hashset」

HashSetは、コレクション内の要素の比較を可能にする操作をカプセル化します。HashSetは、コレクション内の重複する一意の要素を決定するために頻繁に使用されます。

1
HashSet <T> .removeAllメソッドは驚くほど遅い
Jon Skeetは最近彼のブログで興味深いプログラミングトピックを取り上げました:「私の抽象化には、穴があります。 私はセットを持っています– HashSet実際、。いくつかのアイテムを削除したいのですが、アイテムの多くが存在しない可能性があります。実際、私たちのテストケースでは、「removals」コレクションの項目はいずれも元のセットには含まれません。これは、実際にコーディングが非常に簡単に聞こえます。結局のところ、私たちはSet&lt;T&gt;.removeAll私たちを助ける必要がありますよね? 「ソース」セットのサイズと「削除」コレクションのサイズをコマンドラインで指定し、両方をビルドします。ソースセットには負でない整数のみが含まれています。削除セットには負の整数のみが含まれています。を使用してすべての要素を削除するのにかかる時間を測定しますSystem.currentTimeMillis()。これは、世界で最も正確なストップウォッチではありませんが、この例では十分すぎるほどです。これがコードです: import java.util.*; public class Test { public static void main(String[] args) { int sourceSize = Integer.parseInt(args[0]); int removalsSize = Integer.parseInt(args[1]); Set&lt;Integer&gt; source = new HashSet&lt;Integer&gt;(); Collection&lt;Integer&gt; removals = new ArrayList&lt;Integer&gt;(); for (int i = 0; i &lt; sourceSize; i++) { source.add(i); } for (int i …

11
HashSet <T>から実際のアイテムを取得するにはどうすればよいですか?
なぜそれが不可能なのかについてこの質問を読みましたが、問題の解決策が見つかりませんでした。 .NETからアイテムを取得したいのHashSet&lt;T&gt;ですが。私はこの署名を持つメソッドを探しています: /// &lt;summary&gt; /// Determines if this set contains an item equal to &lt;paramref name="item"/&gt;, /// according to the comparison mechanism that was used when the set was created. /// The set is not changed. If the set does contain an item equal to /// &lt;paramref name="item"/&gt;, then the …
85 c#  .net  hashset 

12
Java HashMap keySet()の反復順序は一貫していますか?
MapのkeySet()メソッドから返されるSetは、特定の順序を保証するものではないことを理解しています。 私の質問は、それは複数の反復にわたって同じ順序を保証するかどうかです。例えば Map&lt;K,V&gt; map = getMap(); for( K k : map.keySet() ) { } ... for( K k : map.keySet() ) { } 上記のコードでは、マップが変更されていないと仮定すると、keySetに対する反復は同じ順序になります。Sunのjdk15を使用することはありません同じ順序で反復するが、私はこの動作に依存する前に、私はすべてのJDKが同じことをするでしょうかどうかを知りたいのです。 編集 答えから、私はそれに頼ることができないことがわかります。残念な。注文を保証するために新しいコレクションを作成する必要がないことを望んでいました。私のコードは、繰り返し処理し、いくつかのロジックを実行してから、同じ順序で再度繰り返し処理する必要がありました。keySetから新しいArrayListを作成するだけで、順序が保証されます。

1
HashSetコードの予期しない実行時間
だから、もともと、私はこのコードを持っていました: import java.util.*; public class sandbox { public static void main(String[] args) { HashSet&lt;Integer&gt; hashSet = new HashSet&lt;&gt;(); for (int i = 0; i &lt; 100_000; i++) { hashSet.add(i); } long start = System.currentTimeMillis(); for (int i = 0; i &lt; 100_000; i++) { for (Integer val : hashSet) { …
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.