问题标签 [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.

0 投票
8 回答
1291 浏览

java - 简单问题:以下Java程序的输出

为什么上面的程序输出是3?

编辑

看到以下评论,我正在扩展我的问题:

System.out.println (s1 == s2);

s1 和 s2 是指同一个对象吗?如果那么上面的语句应该打印 true 但它的输出是 false。

它们在哈希码方面是否相似但仍然不同?

0 投票
1 回答
3664 浏览

c# - 哈希集中的重复元素

我目前对哈希集有疑问。我的类是不可变的并且只包含一个项目,当我将两个具有相同数据的不同类添加到哈希集中时,我会将它们都放在集合中。这很奇怪,因为我在基类和超类上都重载了 Equals 和 GetHashCode。

和继承类:

如您所见,所有真正的工作都被推迟到作为 id 的 BigInteger 上。这是一个 .net 类,我已经确认如果我只是将 BigInteger 添加到哈希集中,我不会重复。

澄清:

0 投票
20 回答
268283 浏览

java - HashSet 和 HashMap 的区别?

除了HashSet不允许重复值之外,HashMap和之间有什么区别HashSet

我的意思是实施明智?这有点模糊,因为两者都使用哈希表来存储值。

0 投票
4 回答
2051 浏览

java - Java HashSet和数据类型Short,不兼容?

运行此代码:

将打印值 100。

为什么要打印这个值?

0 投票
4 回答
405 浏览

.net - 对于只读、无序的唯一字符串集合,什么是性能最快的选项?

免责声明:我意识到这个问题的完全显而易见的答案是HashSet<string>。它的速度快得离谱,它是无序的,它的值是独一无二的。

但我只是想知道,因为HashSet<T>是一个可变类,所以它有Add,Remove等;所以我不确定使这些操作成为可能的底层数据结构在读取操作时是否会牺牲某些性能 - 特别是,我关心Contains.

基本上,我想知道现有的可以为 type 对象提供方法的绝对最快的数据结构是什么。在 .NET 框架本身内部或外部。Containsstring

我对各种答案感兴趣,不管它们有什么限制。例如,我可以想象某些结构可能仅限于特定长度的字符串,或者可能会根据问题域(例如,可能的输入值的范围)等进行优化。如果存在,我想听听。

最后一件事:我并没有将其限制为只读数据结构。显然,任何读写数据结构都可以嵌入到只读包装器中。我什至提到“只读”这个词的唯一原因是我对允许添加、删除等的数据结构没有任何要求。不过,如果它具有这些功能,我不会抱怨。


更新

Moron 的回答是我正在寻找的那种东西的一个很好的例子。Trie * 绝对看起来很有可能,原因如下:HashSet<T>.Contains取决于GetHashCodesome 的功能,IEqualityComparer<string>我所知,在 .NET 中默认为 O(n)**。换句话说,必须检查字符串中的每个字符HashSet<string>.Contains返回or。对于 a ,只有一个返回值需要 O(n) 来确定; 的返回值可能会更快地返回。true falseTrietruefalse

这当然是假设的。到目前为止,我还没有在 .NET 中编写或遇到可以击败 a HashSet<string>at的 Trie 实现Contains(尽管我自己编写的实现非常接近字母表 'a' 到 'z')。我只是说,这似乎是可能的。

*顺便说一句,那个链接也让我想到了另一个有趣/类似的可能性:DAWG
**这里的“n”是指字符串的长度。

0 投票
2 回答
1099 浏览

java - 在单元测试中验证 Set 值的最佳方法是什么?

好的,通常我会有一个返回某种 Set 的方法。对这种方法进行单元测试的问题在于,不能保证对集合的迭代总是以相同的顺序返回项目。

有没有人有任何验证集合的首选方法?

彼得

0 投票
2 回答
10616 浏览

c# - C#:字典值到哈希集的转换

请建议转换Dictionary<Key, Value>为的最短方法Hashset<Value>

IEnumerables是否有内置的ToHashset() LINQ 扩展?

先感谢您!

0 投票
7 回答
9330 浏览

java - Huge performance difference between Vector and HashSet

I have a program which fetches records from database (using Hibernate) and fills them in a Vector. There was an issue regarding the performance of the operation and I did a test with the Vector replaced by a HashSet. With 300000 records, the speed gain is immense - 45 mins to 2 mins!

So my question is, what is causing this huge difference? Is it just the point that all methods in Vector are synchronized or the point that internally Vector uses an array whereas HashSet does not? Or something else?

The code is running in a single thread.

EDIT: The code is only inserting the values in the Vector (and in the other case, HashSet).

0 投票
2 回答
729 浏览

c# - 棘手的算法...在嵌套的 HashSet 中找到多个子集组合?

我有一个问题,我必须在嵌套哈希集中找到多个子集组合。基本上我有一个“主”嵌套哈希集,并且从“可能”嵌套哈希集的集合中,我必须以编程方式找到可能是“主”的同时子集的“可能”。

可以说我有以下内容:

我应该从我的算法中得到的输出应该如下:

所有可能的组合子集:

我正在尝试找出解决此问题的最佳方法。当然,还有蛮力选项,但如果可以的话,我会尽量避免这种情况。

我只希望我的问题足够清楚。

编辑

为了进一步详细说明什么构成子集,这里有一些例子,给定主 {{"A","B","C"},{"C","D","E",F"},{ "X","Y","Z"}} :

  • {{"A","B"}{"C","D"}} 将是
  • {{"A","B","C"},{"X","Y"}} 将是一个子集
  • {{"A","B"},{"A","B"}} 不会是子集
  • {{"A","B","C","D"}} 不会是子集
  • {{"A","B","C"},{"C","D","X"}} 不会是子集

基本上每个子集都需要是 master 中相应子集的子集。

0 投票
9 回答
6950 浏览

java - 哈希集。在大集合中表现缓慢

我遇到了一个问题,我找不到解决方案。我正在使用 HashSet 来存储值。我存储的值是自定义类型 Cycles,其中我已经覆盖了 HashCode 并等于以下内容,以确保低速性能不受 hascode 或 equal 方法的影响另外我已将哈希集的初始容量设置为 10.000 .000

在第一个 1.500.000 个值之后,当我尝试添加一个新值(使用 HashSet 类的 add 方法)时,程序非常慢。最终,在存储的值达到 1.600.000 之前,我将遇到 java 内存不足异常(线程“Thread-0”java.lang.OutOfMemoryError:Java 堆空间中的异常)

我使用的 IDE 是 Eclipse。所以下一步是将 JVM 堆大小从默认值增加到 1 giga(使用命令 Xmx1000M 和 Xms1000M)现在椭圆开始时可用内存增加 10 倍(我可以在右下角看到总堆大小显示内存和已用内存)但我再次具有与以前相同的值(在 1.500.000 之后和 1.600.000 之前)相同的“慢”性能和相同的内存不足错误,这很奇怪。

有谁知道这可能是什么问题?

先感谢您