问题标签 [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 投票
1 回答
389 浏览

.net - 哈希集和所有成员相同的类的不同实例

假设我有一个名为 myclass 的类。

在我的代码中,我有两个 myclass 实例,myclass1 和 myclass2。它们的一切(公共和私有)属性都是相同的。

如果我尝试将它们都添加到 HashSet 中,它会同时添加还是只添加一个?如果它同时添加而我不想要它,我可以在 myclass 定义中覆盖 equals 并且 HasSet 会知道如何使用它吗?

0 投票
1 回答
457 浏览

sql - 将 Hashset 内容序列化为 SQL 表

我有一个要序列化为 SQL Server 表的哈希集。当序列化的哈希集看起来像这样......

我正在使用以下内容将 XML 插入表中...

但是,我只将第一个 id 插入到表中。在这种情况下是否可以插入所有 id?

我正在使用 SQL Server 2005

0 投票
3 回答
390 浏览

c# - 在 C# 中返回对象列表的最快方法是什么?

我正在为 3D 建模程序编写插件。API 有一个功能,您可以在其中截取显示管道并插入其他几何图形,这些几何图形将在实际不在模型中显示的情况下显示(您可以看到它,但您不能选择/移动/删除等) .

API 的这个特性的一部分是在每次屏幕刷新时调用的方法,用于告诉程序要显示哪些额外的几何图形。现在我有一个用 foreach 语句迭代的HashSet 。OnBrep是 API 的通用几何类。

我有一个附加命令,可以将“Ghost”几何图形转储到实际模型中。我发现,如果几何实际上在模型中,则显示速度会加快很多。所以我想知道是否有更快的方法向程序提供对象列表?一个简单的一维数组会比 HashSet<> 快得多吗?

0 投票
1 回答
276 浏览

java - Java 程序结构建议

作为我的第一个面向对象的程序,我正在用 Java 构建和排序 RSS 阅读器,并且会喜欢一些 OO 设计技巧。

我有一个 Reader 类,其中包含 RSS 提要的提要对象列表,每个提要都将新闻项目下载到文章列表中的文章对象中。

我想做的是找到一种方法来关联来自多个来源的文章。为此,每篇文章都有其关键字的 HashSet,我想将所有文章的关键字相互比较,并记录其匹配关键字的数量。如果两篇文章之间的计数很高,我想将它们分组到输出中。

对文章进行“多对多”(?)比较并跟踪相对分数的有效方法是什么?

0 投票
2 回答
23427 浏览

c++ - 简单的 C++ hash_set 示例

我是 C++ 和 STL 的新手。我坚持以下存储自定义数据结构的哈希集的简单示例:

当我尝试编译它时,我收到以下错误消息:

我究竟做错了什么?

0 投票
14 回答
317449 浏览

java - 哈希集与树集

我一直很喜欢树木,它们很漂亮O(n*log(n))而且很整洁。然而,我认识的每一位软件工程师都尖锐地问我为什么要使用TreeSet. 从 CS 的背景来看,我认为你使用什么并不重要,我也不想乱用散列函数和存储桶(在 的情况下Java)。

在哪些情况下我应该使用 a HashSetover a TreeSet

0 投票
5 回答
32113 浏览

c# - HashSet 在 C# 中删除项目时迭代

我在 C# 中有一个哈希集,如果在迭代哈希集时满足条件,我将删除该哈希集,并且无法使用如下的 foreach 循环执行此操作。

那么,如何在迭代时删除元素?

0 投票
12 回答
27962 浏览

c# - 为什么我不能在没有枚举的情况下从 HashSet 中检索项目?

我正在寻找对 HashSet 设计者负责人的深入了解。据我所知,我的问题同时适用于 Java 和 C# HashSet,这让我认为这一定有一些充分的理由,尽管我自己也想不出任何理由。

在我将一个项目插入 HashSet 之后,为什么没有枚举就无法检索该项目,这几乎不是一个有效的操作?特别是因为 HashSet 是以一种支持有效检索的方式显式构建的。

让 Remove(x) 和 Contains(x) 返回被删除或包含的实际项目通常对我很有用。这不一定是我传递给 Remove(x) 或 Contains(x) 函数的项目。当然,我想我可以通过 HashMap 实现相同的效果,但是当完全可以使用集合来实现这一点时,为什么还要浪费所有的空间和精力呢?

我可以理解可能存在一些设计问题,即添加此功能将允许使用与其在框架中的角色或未来角色不一致的 HashSet,但如果是这样,这些设计问题是什么?

编辑

要回答更多问题,以下是更多详细信息:

我正在使用具有覆盖哈希码、等号等的不可变引用类型来模拟 C# 中的值类型。假设该类型具有成员 A、B 和 C。Hashcode、equals 等仅依赖于 A 和 B。假设某些 A 和 BI 希望能够从哈希集中检索该等价项并获得它是 C。我会的似乎无法为此使用 HashSet,但我至少想知道是否有任何充分的理由。伪代码如下:

0 投票
4 回答
26708 浏览

c# - 保留排序的 HashSet

我需要一个保留插入顺序的 HashSet,框架中是否有任何实现?

0 投票
7 回答
3885 浏览

c# - 值对象的 IEqualityComparer

我有一个不可变的值对象 IPathwayModule,其值由以下内容定义:

  • (int) 块;
  • (实体)模块,由(字符串)ModuleId 标识;
  • (枚举)状态;和
  • (实体)类,由(字符串)ClassId 标识 - 可以为 null。

这是我当前的 IEqualityComparer 实现,它似乎适用于一些单元测试。但是,我认为我不了解自己做得好到足以知道自己做得是否正确。以前的实现有时会在重复测试运行时失败。

IPathwayModule 绝对是不可变的,具有相同值的不同实例应该相等并产生相同的 HashCode,因为它们被用作 HashSet 中的项目。

我想我的问题是:

  • 在这种情况下我是否正确使用了界面?
  • 是否存在我可能看不到所需行为的情况?
  • 有什么方法可以提高鲁棒性、性能吗?
  • 有没有我没有遵循的良好做法?