• HashSet去重


    class Program
        {
            static void Main(string[] args)
            {
                Console.WriteLine("http://www.itsvse.com");
                HashSet<Test1> list1 = new HashSet<Test1>();
                HashSet<Test2> list2 = new HashSet<Test2>();
                HashSet<string> list3 = new HashSet<string>();
    
                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相同就认为是相同的实例,当然也可以是其他,这就要看具体需求

  • 相关阅读:
    IDS与IPS功能分析
    CentOS 命令大全
    仿京东放大镜
    CSS垂直水平居中方法总结
    Java学习之计算机基础(一)
    Java 代码学习之理解数据类型中的坑
    Java 代码学习之数组的初始化
    Java中的比较总结
    Java Random介绍
    手机网站开发必修课[2]:浏览器兼容性测试
  • 原文地址:https://www.cnblogs.com/zl181015/p/11049868.html
Copyright © 2020-2023  润新知