检查对象 HashSet 的相等性

2023-12-13

我正在尝试比较两个哈希集Definition输入为EqualityComparer<T>.Default.Equals(value, oldValue). Definition定义如下

public class Definition
{
    public string Variable { get; set; }
    public HashSet<Location> LocationList { get; set; }

    public override bool Equals(object obj)
    {
        Definition other = obj as Definition;
        return other.Variable.Equals(this.Variable) && other.LocationList!= null &&this.LocationList != null
            && other.LocationList.Count == this.LocationList.Count
            && other.LocationList == this.LocationList;
    }

    public override int GetHashCode()
    {
        return this.Variable.GetHashCode() ^ this.LocationList.Count.GetHashCode();// ^ this.LocationList.GetHashCode();
    }
}

public class Location
{
    public int Line { get; set; }
    public int Column { get; set; }
    public int Position { get; set; }
    public string CodeTab { get; set; }
    public Location(int line, int col, int pos, string tab)
    {
        Line = line;
        Column = col;
        Position = pos;
        CodeTab = tab;
    }
    public override bool Equals(object obj)
    {
        Location other = obj as Location;
        return this.CodeTab == other.CodeTab
            && this.Position == other.Position
            && this.Column == other.Column
            && this.Line == other.Line;
    }
    public override int GetHashCode()
    {
        return this.CodeTab.GetHashCode() ^ this.Position.GetHashCode() 
            ^ this.Column.GetHashCode() ^ this.Line.GetHashCode();
    }
}

不知何故,对于相似的集合,结果返回为false尽管所有信息保持不变。唯一的区别是一些元素的位置互换了,但我知道HashSet比较时不会保留或检查顺序。任何人都可以告诉我这里出了什么问题吗?

PS:我尝试取消注释this.LocationList.GetHashCode()也,但没有用。


您需要为集合创建一个比较器:

var setComparer = HashSet<Location>.CreateSetComparer();
return other.Variable.Equals(this.Variable) && setComparer.Equals(this.LocationList, other.LocationList);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

检查对象 HashSet 的相等性 的相关文章

  • 如何在 Visual Studio 2010 中增强 XAML 设计器?

    当我使用 XAML 设计器时 进入设计器和退出设计器是如此困难和缓慢 当我这样做时 Visual Studio 卡了一段时间 有什么方法可以增强 XAML 设计器和编辑器吗 Ant 保存 XAML 文件时非常慢 这通常意味着您可能有复杂的
  • 用 C++ 进行服装建模 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在编写一些软件 最终会绘制一个人体框架 可以配置各种参数 并且计划是在假人身上放置某种衣服 我研究
  • 使用Physics.Raycast 和Physics2D.Raycast 检测对象上的点击

    我的场景中有一个空的游戏对象 带有 2D 组件盒碰撞器 我将脚本附加到该游戏对象 void OnMouseDown Debug Log clic 但是当我点击我的游戏对象时 没有任何效果 你有什么想法 如何检测我的盒子碰撞器上的点击 使用光
  • 推导指南中的引用和值之间的差异

    考虑类型A template
  • 互斥体实现可以互换(独立于线程实现)

    所有互斥体实现最终都会调用相同的基本系统 硬件调用吗 这意味着它们可以互换吗 具体来说 如果我使用 gnu parallel算法 使用openmp 并且我想让他们称之为线程安全的类我可以使用boost mutex用于锁定 或者我必须编写自己
  • 读取文件特定行号的有效方法。 (奖励:Python 手册印刷错误)

    我有一个 100 GB 的文本文件 它是来自数据库的 BCP 转储 当我尝试导入它时BULK INSERT 我在第 219506324 行上收到一个神秘错误 在解决此问题之前 我想看看这一行 但可惜的是我最喜欢的方法 import line
  • 如何从 .resx 文件条目获取注释

    资源文件中的字符串有名称 值和注释 The ResXResourceReader类让我可以访问名称和值 有办法看评论吗 你应该能够得到Comment via ResXDataNode class http msdn microsoft co
  • 如何在 Linq 中获得左外连接?

    我的数据库中有两个表 如下所示 顾客 C ID city 1 Dhaka 2 New york 3 London 个人信息 P ID C ID Field value 1 1 First Name Nasir 2 1 Last Name U
  • Rx 中是否有与 Task.ContinueWith 运算符等效的操作?

    Rx 中是否有与 Task ContinueWith 运算符等效的操作 我正在将 Rx 与 Silverlight 一起使用 我正在使用 FromAsyncPattern 方法进行两个 Web 服务调用 并且我想这样做同步地 var o1
  • 未经许可更改内存值

    我有一个二维数组 当我第一次打印数组的数据时 日期打印正确 但其他时候 array last i 的数据从 i 0 到 last 1 显然是一个逻辑错误 但我不明白原因 因为我复制并粘贴了 for 语句 那么 C 更改数据吗 I use g
  • 在一个字节中存储 4 个不同的值

    我有一个任务要做 但我不知道从哪里开始 我不期待也绝对不想要代码中的答案 我想要一些关于该怎么做的指导 因为我感到有点失落 将变量打包和解包到一个字节中 您需要在一个字节中存储 4 个不同的值 这些值为 NAME RANGE BITS en
  • 如何在 Blackberry Cascades 中显示具有特定号码的电话板

    我正在使用带有 C QT 和 QML 的 Blackberry Cascades 10 Beta 3 SDK 以及 Blackberry 10 Dev Alpha Simulator 和 QNX Momentics IDE 并且我正在尝试实
  • 如何将自定义 JSON 文件添加到 IConfiguration 中?

    我正在使用 asp net Autofac 我正在尝试加载自定义 JSON 配置文件 并基于该文件创建 实例化 IConfiguration 实例 或者至少将我的文件包含到默认情况下构建的 IConfiguration asp net 中
  • 将 log4net 与 Autofac 结合使用

    我正在尝试将 log4net 与 Autofac 一起使用 我粘贴了这段代码http autofac readthedocs org en latest examples log4net html http autofac readthed
  • 私有模板函数

    我有一堂课 C h class C private template
  • HttpWebRequest 在第二次调用时超时

    为什么以下代码在第二次 及后续 运行时超时 代码挂在 using Stream objStream request GetResponse GetResponseStream 然后引发 WebException 表示请求已超时 我已经尝试过
  • 如何对 Web Api 操作进行后调用?

    我创建了一个 Web API 操作 如下所示 HttpPost public void Load string siteName string providerName UserDetails userDetails implementat
  • gcc 的配置选项如何确定默认枚举大小(短或非短)?

    我尝试了一些 gcc 编译器来查看默认枚举大小是否很短 至少一个字节 强制使用 fshort enums 或无短 至少 4 个字节 强制使用 fno short enums user host echo Static assert 4 si
  • C++ 密码屏蔽

    我正在编写一个代码来接收密码输入 下面是我的代码 程序运行良好 但问题是除了数字和字母字符之外的其他键也被读取 例如删除 插入等 我知道如何避免它吗 特q string pw char c while c 13 Loop until Ent
  • Linq-to-entities,在一个查询中获取结果+行数

    我已经看到了有关此事的多个问题 但它们已经有 2 年 或更长 的历史了 所以我想知道这方面是否有任何变化 基本思想是填充网格视图并创建自定义分页 所以 我还需要结果和行数 在 SQL 中 这将类似于 SELECT COUNT id Id N

随机推荐

  • 接受用于填充“url_for”方法的 URL 参数是否安全?

    我正在使用 Ruby on Rails 4 1 1 并且我正在考虑接受直接传递到的参数 通过 URL 查询字符串 url for方法 这样 URL in the browser http www myapp com redirect to
  • 浮点型和双精度型有什么区别?

    我读过有关双精度和单精度之间的区别的内容 然而 在大多数情况下 float and double似乎可以互换 即使用其中之一似乎不会影响结果 事实真的如此吗 浮点数和双精度数什么时候可以互换 它们之间有什么区别 差异巨大 As the na
  • Javascript读取文件夹中的文件

    我有以下问题 我正在尝试用 javascript 解决 我有一个 div 其背景图像在 css 文件中指定 我希望我的 javascript 定期更改该图像 假设每 5 秒一次 我知道该怎么做 问题是我有一个图像文件夹可供选择作为背面图像
  • 如何查看 mongoDB 中的任何更改(新行)?

    有没有办法观察每一个collection 甚至一个 中mongoDB 现在我考虑计时器来检查文档编号或最后一个 ID 但也许有可能实现类似的机制newDocumentAddedEvent MongoDB 中还没有触发器 还没有 但是如果您正
  • 将 R 中的多个绘图导出到 ppt 中

    我在这里找到了一个函数 可以为在 R 中创建的绘图创建带有幻灯片的 ppt 这是该函数的链接 R 将当前活动的 R 图导出到 Powerpoint Word LibreOffice 的功能 我希望我的程序添加几张幻灯片 每张幻灯片包含一张图
  • ' aria-label='如何判断浏览器是否支持 '> 如何判断浏览器是否支持

    可能的重复 HTML5 类型检测和插件初始化
  • PythonInfo 没有 virtualenv 实现

    我遇到 virtualenv 实现错误 我知道 python2 7 很旧 但仍然需要 有人有解决办法吗 PythonInfo base exec prefix None system stdlib u usr lib python2 7 h
  • 为什么我们必须在内部类中将静态变量声明为final? [复制]

    这个问题在这里已经有答案了 我的代码是这样的 public class BookStore class Enumerator1 static int b 0 requires final public String searchBook f
  • 跨域请求和JQuery

    我尝试使用 getJSON 通过 jquery 向 Web 服务发出跨域请求 它工作正常 但是 当我尝试在 Internet Explorer 7 或 8 中发出相同的请求时 该请求永远不会发送 有人有主意吗 JSONP 就是为了这个目的而
  • 在 Perl 中如何找到所有重定向后的最终 URL?

    可以说我有 http www ritzcarlton com 这将我重定向到 http www ritzcarlton com en Default htm Perl 有没有办法在所有重定向后找到最终网址 使用 LWP 将为您遵循重定向 然
  • 在 JavaScript 中反转字符串

    我正在尝试反转输入字符串 var oneway document getElementById input field value var backway oneway reverse 但萤火虫告诉我oneway reverse 不是一个函
  • VS2015 中的 CoreCLR 控制台应用程序项目中没有本机代码调试?

    我真的很想跳过 CoreCLR 新的项目结构 nuget 合并到构建系统 文件系统报告更改时自动刷新解决方案以及针对多个平台只是我想从旧的 csproj net 继续前进的部分原因4 x 的东西 我的主要用例之一是使用 C 探索多平台游戏引
  • 如何将“字符串列表”变成真正的列表?

    我正在开一个 txt文件 并且必须使用其中的列表来执行我正在编写的函数 这是文本文件中给出的列表之一 24 72 95 100 59 80 87 n Using strip 它摆脱了 n 所以就变成 24 72 95 100 59 80 8
  • 递归 JSON 架构

    我正在尝试为带有子菜单的菜单创建正确的 JSON 架构 所以我应该从 item 定义一个数组 其中应包含三个项目 1 显示名称 2 URL 和子项 应该是具有相同结构的对象数组 此时我得到了这个 type array additionalP
  • main() 总是返回 int? [复制]

    这个问题在这里已经有答案了 可能的重复 C C 中 main 应该返回什么 为什么我们在c 中给出int main而不是void main 我开始学习 C 时 我想到了以下问题 main 总是返回 int 我不能声明无效主 代替int ma
  • 更改列表框中所选项目的背景颜色

    首先 我在这里和网络上搜索 发现很多解决方案如何更改 WPF 中列表框中所选项目的背景颜色 但没有找到如何在 Windows 应用商店应用程序中更改它 这个框架有点不同 我无法使用任何解决方案 我用这个 http social msdn m
  • Android:使用两个 ValueEventListener 从 firebase 数据库获取数据(在 Arraylist 过期之前设置适配器)

    我正在开发一个应用程序 数据库中有医生和患者等用户 患者数据和患者中可能有医生userIduserId在医生数据中 因为在应用程序中医生会看到有关他 她的患者的一些信息 我开发了这段代码 但在设置适配器之前我无法将患者信息添加到Arrayl
  • 使用增强几何从点到线的垂直地理距离

    我想得到距一点的垂直距离 t 到一条线段 p q 垂线不能与直线相交 p q 在这种情况下我想延长线路 p q 假设 然后绘制垂线以获得距离 p q t 都是 GPS 坐标 我正在使用增强几何 typedef boost geometry
  • 根据过去 90 天的登录情况计算活跃用户数

    我正在尝试进行一个查询 该查询将生成一个列表 显示我们每月有多少活跃用户 我们将活跃用户定义为过去 90 天内登录的用户 我可以通过这个轻松定义我们现在拥有的活跃用户数量 SELECT COUNT DISTINCT user id FROM
  • 检查对象 HashSet 的相等性

    我正在尝试比较两个哈希集Definition输入为EqualityComparer