Questions tagged «hashset»

HashSet封装了允许比较集合中元素的操作。HashSet通常用于确定集合中的重叠元素和唯一元素。

1
HashSet <T> .removeAll方法出奇的慢
乔恩·斯凯特(Jon Skeet)最近在他的博客上提出了一个有趣的编程主题:“我的抽象中有一个漏洞,亲爱的Liza,亲爱的Liza”(强调): 我有一套- HashSet实际上。我想从中删除一些项目……许多项目可能不存在。实际上,在我们的测试案例中,“删除”集合中的所有项目都不在原始集中。这听起来(确实是)非常容易编码。毕竟,我们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()迭代顺序是否一致?
我了解从地图的keySet()方法返回的Set不能保证任何特定的顺序。 我的问题是,它可以确保多次迭代的顺序相同吗?例如 Map&lt;K,V&gt; map = getMap(); for( K k : map.keySet() ) { } ... for( K k : map.keySet() ) { } 在上面的代码中,假设映射不修改,将迭代在按键组处于相同的顺序。使用Sun的jdk15,它会以相同的顺序进行迭代,但是在我依赖此行为之前,我想知道所有JDK是否都将执行相同的操作。 编辑 从答案中我看到我不能依靠它。太糟糕了。我希望能够不必建立一些新的Collection来保证我的订购而摆脱困境。我的代码需要进行迭代,执行一些逻辑,然后以相同的顺序再次进行迭代。我只是从keySet创建一个新的ArrayList来保证顺序。


7
使HashSet <string>不区分大小写
我有HashSet参数的方法。我需要在其中包含不区分大小写的包含内容: public void DoSomething(HashSet&lt;string&gt; set, string item) { var x = set.Contains(item); ... } 有什么办法可以使现有的HashSet不区分大小写(不创建新的)? 我正在寻找性能最佳的解决方案。 编辑 包含可以被多次调用。所以IEnumerable扩展对我来说是不可接受的,因为它的性能低于本机的HashSet Contains方法。 解 既然,回答我的问题是“否”,那是不可能的,我创建并使用了以下方法: public HashSet&lt;string&gt; EnsureCaseInsensitive(HashSet&lt;string&gt; set) { return set.Comparer == StringComparer.OrdinalIgnoreCase ? set : new HashSet&lt;string&gt;(set, StringComparer.OrdinalIgnoreCase); }
74 c#  .net  hashset 


6
HashSet是否保留插入顺序?
HashSet.NET 3.5中引入的集合在使用进行迭代时是否保留插入顺序foreach? 该文档的状态,该集合没有排序,但它并没有说明插入顺序什么。预发布的BCL博客条目指出该条目是无序的,但本文指出该条目旨在保留插入顺序。我的有限测试表明,该顺序得以保留,但这可能是一个巧合。
70 .net  hashset 

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) { …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.