当前位置: 首页 > news >正文

【算法+C#】重写HashCode,去重相同坐标的二维点

  1. 创建Point类,重写GetHashCodeEquals函数。
    这样相同XY坐标的Point对象会返回相同的HashCode,就可以使用HashSet集合对点坐标去重。
        class Point{public double X;public double Y;public Point(double x, double y){X = x; Y = y;}public sealed override int GetHashCode(){int result = 17;result = 37 * result + X.GetHashCode();result = 37 * result + Y.GetHashCode();return result;}public sealed override bool Equals(object obj){if(obj is Point pt){return X == pt.X && Y == pt.Y;}return false;}public sealed override string ToString(){return $"X={X},Y={Y}";}}
  1. 使用HashSet集合处理所有点坐标。
        public void TestMethod1(){var hashSet = new HashSet<Point>();hashSet.Add(new Point(0,0));hashSet.Add(new Point(0.1,1.1));hashSet.Add(new Point(0.1,1.1));//返回falsehashSet.Add(new Point(0.1,2));hashSet.Add(new Point(0.1,2));//返回falseforeach(Point pt in hashSet){Console.WriteLine(pt.ToString());}}

输出结果:

X = 0,Y = 0
X = 0.1,Y = 1.1
X = 0.1,Y = 2

如果Point类中不重写GetHashCodeEquals函数,那么上面会输出:

X=0,Y=0
X=0.1,Y=1.1
X=0.1,Y=1.1
X=0.1,Y=2
X=0.1,Y=2

http://www.mrgr.cn/news/64070.html

相关文章:

  • 计算机组成原理之CPU的功能与基本结构
  • C语言---程序设计练习题目及学习方法2
  • 【异常解决】AmazonS3 getAllObjectsByPrefix() 返回数据只有1000条
  • Blender进阶:着色器节点
  • 数据结构-顺序表(c语言)
  • 3D Gaussian Splatting代码详解(一):模型训练、数据加载
  • 全面解析 ESPnet:Aishell 项目深入指南
  • 2025院士增选高校候选人名单公布,医工交叉领域有这些专家需要重点关注!|24-11-02
  • 2-8软件包管理
  • 7、LVM逻辑卷详解
  • tmux查看的日志范围有限
  • Django 5企业级Web应用开发实战-日志
  • DNS服务器
  • openGauss数据库-头歌实验1-3 创建和管理模式
  • C++ 实现俄罗斯方块游戏
  • DPDK event 驱动开发
  • 【数据库】用关系代数的基本运算来表示其他运算
  • 一台手机可以登录运营多少个TikTok账号?
  • 少样本无标签室内定位论文精华-20241102
  • clion远程配置docker ros2
  • 【Java语言】继承和多态(一)
  • 小夜灯语音识别芯片,灯具声控方案,NRK3301
  • Linux初阶——线程(Part3):POSIX 信号量 CP 模型变体
  • 线程安全的单例模式(Singleton)。
  • 基于Python可视化的热门微博数据分析系统
  • WPF 实现冒泡排序可视化