博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
HashSet去重
阅读量:5113 次
发布时间:2019-06-13

本文共 1774 字,大约阅读时间需要 5 分钟。

class Program    {        static void Main(string[] args)        {            Console.WriteLine("http://www.itsvse.com");            HashSet
list1 = new HashSet
();            HashSet
list2 = new HashSet
();            HashSet
list3 = new HashSet
();            list1.Add(new Test1(1, "a"));            list1.Add(new Test1(2, "b"));            list1.Add(new Test1(3, "c"));            list1.Add(new Test1(4, "d"));            list1.Add(new Test1(4, "d"));            list2.Add(new Test2(1, "a"));            list2.Add(new Test2(2, "b"));            list2.Add(new Test2(3, "c"));            list2.Add(new Test2(4, "d"));            list2.Add(new Test2(4, "d"));            list3.Add("1");            list3.Add("2");            list3.Add("3");            list3.Add("4");            list3.Add("4");            Console.WriteLine("输出list1");            foreach (var item in list1)            {                Console.WriteLine(item.id);            }            Console.WriteLine("输出list2");            foreach (var item in list2)            {                Console.WriteLine(item.id);            }            Console.WriteLine("输出list3");            foreach (var item in list3)            {                Console.WriteLine(item);            }            Console.ReadKey();        }    }    public class Test1    {        public Test1(long i,string str)        {            this.id = i;            this.a = str;        }        public long id { get; set; }        public string a { get; set; }    }    public class Test2    {        public Test2(long i, string str)        {            this.id = i;            this.a = str;        }        public long id { get; set; }        public string a { get; set; }        public override bool Equals(object obj)        {            Test2 e = obj as Test2;            return this.id == e.id && this.a == e.a;        }        public override int GetHashCode()        {            return this.id.GetHashCode() + this.a.GetHashCode();        }    }

  

1,如果hash码值不相同,说明是一个新元素,存;

2,如果hash码值相同,且equles判断相等,说明元素已经存在,不存
3,如果hash码值相同,且equles判断不相等,说明元素不存在,存;
我们Test2对象,重写了对象的的equals和hashCode方法。这里让Test2对象,只要是id和a相同就认为是相同的实例,当然也可以是其他,这就要看具体需求

转载于:https://www.cnblogs.com/zl181015/p/11049868.html

你可能感兴趣的文章
this指针基础介绍
查看>>
如何把checkbox做成radio一样的单选效果
查看>>
分享:将业务系统页面嵌入到统一平台中(简易版)
查看>>
我要学习Python
查看>>
toad连接数据库
查看>>
Convert recaf.jar file to recaf.dmg setup package on MacOS
查看>>
tp5之行为监听、钩子行为的绑定与侦听
查看>>
Java中算法的时间及空间复杂性
查看>>
Qt中Pro文件变量详细说明
查看>>
《JAVA程序设计》_第十周学习总结
查看>>
mysql命令使用3
查看>>
C C++ Java中的static
查看>>
(线段树)UESTC 360-Another LCIS
查看>>
Linux启动过程分析
查看>>
[NOI 2006] 最大获利
查看>>
[软件工程基础]2017.10.31 第四次 Scrum 会议
查看>>
线性基 复习总结
查看>>
Contest Hunter Adera6C 網絡升級 樹的直徑 樹形DP
查看>>
数据可视化(8)--D3数据的更新及动画
查看>>
DP 50 题
查看>>