问题标签 [hashset]
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.
c# - .NET HashSet 的内部实现包含方法?
我正在为用 C# 编写的库编写测试。而且我想测试两个列表是否相同当且仅当它们具有相同的元素时(不需要相同顺序的元素)。我尝试将列表转换为哈希集并检查两个哈希集是否相同。但是运行结果不是我所期望的。
谁能解释一下 hashset contains 方法是如何工作的?它是通过对象 getHashCode 方法还是 equals 方法比较两个对象?谢谢!
clojure - 帮助我了解 Clojure 中如何处理不变性和运行时间之间的冲突
Clojure 真的引起了我的兴趣,我开始阅读它的教程:http: //java.ociweb.com/mark/clojure/article.html
考虑“设置”下提到的这两行:
我的第一个想法是第二次操作应该需要恒定的时间才能完成;否则,函数式语言可能比面向对象的语言没有什么好处。可以很容易地想象需要从 [几乎] 空集开始,然后在我们进行的过程中填充和缩小它。因此,我们可以将其重新分配给自己,而不是将新结果分配给更多人。
现在,由于函数式语言的奇妙承诺,副作用不再值得关注。所以,集合stooges
并且more-stooges
不应该在彼此之上工作。因此,要么创建more-stooges
是一个线性操作,要么它们共享一个公共缓冲区(如 Java 的StringBuffer
),这似乎是一个非常糟糕的主意并且与不变性相冲突(随后stooges
可以一个接一个地删除一个元素)。
我可能在这里重新发明了一个轮子。当你从最大数量的元素开始,然后一次删除一个直到空集,而不是从一个空集开始并一次增长一个时,似乎hash-set
性能会更高。clojure
上面的例子可能看起来不太实用,或者有解决方法,但是像 Java/C#/Python/etc 这样的面向对象的语言。一次增长或缩小一个或几个元素,同时也可以快速完成。
保证(或只是承诺?)不变性的 [功能] 语言将无法快速增长集合。是否有另一种可以使用的成语以某种方式帮助避免这样做?
对于熟悉的人Python
,我会提到集合理解与等效循环方法。两者的运行时间略有不同,但这与解释器的相对速度有关C
,Python
而不是源于复杂性。我看到的问题是集合理解通常是一种更好的方法,但并不总是最好的方法,因为可读性可能会受到很大影响。
如果问题不清楚,请告诉我。
java - HashSet 似乎没有意识到两个对象是相同的。
我正在尝试使用 HashSet 来存储我创建的类的对象,但显然相同的对象似乎有两个不同的哈希,这就是 contains 方法没有意识到该对象已经在 HashSet 中的原因。这导致我的程序堆内存不足。
我不认为我做错了什么,但无论如何我想要第二个意见。我做过类似的操作,之前都运行良好,这使得这特别烦人。我会很感激任何帮助。
这是我的代码
这是移动类:
这是我得到的输出
linq - 序列化一个 HashSet与 LinQ
我想把HashSet<String>
它优雅地转换成一个字符串。我可以这样迭代:
有没有LinQ
办法优雅而有效地做到这一点?
我能想到的唯一方法是先将其转换为数组:
但是,然后我正在做双重转换。会不会有一些方便而清晰的 LinQ 表达式?
答案 1(来自马尔的想法)
ANSWER 2 使用枚举器(来自 Martin 的解决方案)
vb.net - 包含 List(of String) Vb.net 是否需要一个哈希集
会以下:
比任何慢
包含需要哈希集吗?
c# - 从 .NET HashSet 中按索引选择元素
目前我正在使用从HashSet
. 当我在特定条件下选择项目时,代码中有一点:
它工作正常,我得到了这些元素。但是有没有一种方法可以让我在集合中接收该元素的索引以与ElementAt
方法一起使用,而不是整个对象?
它或多或少看起来像这样:
手动迭代整个集合是更好的方法吗?我需要补充一点,它在一个更大的循环中,所以这个子句针对不同的字符串Where
执行了多次。someLabel
编辑
我需要这个做什么?clusters
是一些文档集合的一组簇。文档按主题相似度分组。所以算法的最后一步是发现每个集群的标签。但是算法并不完美,有时它会产生两个或多个具有相同标签的集群。我想做的只是将这些集群合并成一个大集群。
c# - 使用 base.Any(..) 警告是:“HashSet”不包含“Any”的定义
一个类继承自 HashSet 以获取一组具有自定义EqualKeys(T x, T y)
检查的唯一对象,而不是IEqualityComparer
.
代码无法编译,因为我必须替换base.Any
为this.Any
.
恐怕我不明白这是为什么?
c# - 如何删除所有适当的子集?
给定一个集合列表...
如何删除作为另一个适当子集的所有集合?
这是最好的方法吗?
我正在递减i
,因为我假设所有东西在被移除后都会被轻推,所以我必须再次检查那个插槽。
c# - 减去 HashSet(并返回一个副本)?
我有一个 HashSet,
还有一堆子集,
我想减去一个块,我可以这样做:
但是ExceptWith
就地工作。我不想修改universe
. 我应该先克隆它,还是有更好的方法?
java - 在 Java 中锁定哈希集
我的代码中有一个对象引用的静态 HashSet,它必须禁止所有写入请求,直到给定方法运行(它仅将哈希集用于读取目的)。我已阅读 Thread 基础知识,但尚不清楚如何继续执行此操作。
谁能帮帮我?