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相同就认为是相同的实例,当然也可以是其他,这就要看具体需求
HashSet去重的更多相关文章
- List通过HashSet去重
//JAVA中//使用hashset去重复,set为重复的集合,可以通过new ArrayList(set)转换成list HashSet<HashMap<String, String&g ...
- java 集合 HashSet 实现随机双色球 HashSet addAll() 实现去重后合并 HashSet对象去重 复写 HashCode()方法和equals方法 ArrayList去重
package com.swift.lianxi; import java.util.HashSet; import java.util.Random; /*训练知识点:HashSet 训练描述 双色 ...
- java中List对象列表去重或取出以及排序
面试碰到几次list的去重和排序.下面介绍一种做法: 1. list去重 1.1 实体类Student List<Student>容量10k以上,要求去重复.这里Student的重复标准是 ...
- HashSet中的元素必须重写equals方法和hashCode方法
http://jingyan.baidu.com/article/d5a880eb8fb61d13f147cc99.html 1.为什么必须重写这两个方法. 2.什么事hashSet去重,符合什么样的 ...
- List对象去重碎碎念之神叨叨
前言 List集合操作去除重复数据的这种情况经常会碰到,博客园里面也有很多大神们做过,在这里主要是借鉴然后自己整理了一下,主要是为了方便自己,以后再次碰到这种去重问题,直接打开自己的链接拿起键盘就是干 ...
- List集合去重的一些方法(常规遍历、Set去重、java8 stream去重、重写equals和hashCode方法)
1. 常规元素去重 碰到List去重的问题,除了遍历去重,我们常常想到利用Set集合不允许重复元素的特点,通过List和Set互转,来去掉重复元素. // 遍历后判断赋给另一个list集合,保持原来顺 ...
- java 数组排序并去重
https://www.cnblogs.com/daleyzou/p/9522533.htmlimport java.lang.reflect.Array;import java.util.Array ...
- List转换字典去重问题
数据源 var list = new List<TestClass> { ,Name="}, ,Name="}, ,Name="}, ,Name=" ...
- C#黔驴技巧之去重(Distinct)
前言 关于C#中默认的Distinct方法在什么情况下才能去重,这个就不用我再多讲,针对集合对象去重默认实现将不再满足,于是乎我们需要自定义实现来解决这个问题,接下来我们详细讲解几种常见去重方案,孰好 ...
随机推荐
- 记一次删除ocr与dbfile的恢复记录
自己造成的一个案例: 场景:ocr磁盘组被我dd掉了,dbfile磁盘组也被我dd掉了.Rac起不来.之前ocr的DATA磁盘组被替换到了ABC磁盘.所幸的是有备份. 重新加载OCR磁盘 [root@ ...
- OEL7.6设置光盘YUM源
先把原来的yum源改名让他失效 mv public-yum-ol7.repo public-yum-ol7.repo.bak 然后新建个yum源 [root@localhost yum.repos.d ...
- Linux服务管理之DHCP
1.DHCP服务简介 DHCP(Dynamic Host Configuration Protocol,动态主机配置协议)是一个局域网的网络协议,使用UDP协议工作, 主要有两个用途:给内部网络或网络 ...
- 在centos下安装pycrypto报错
yum -y install python36-devel libevent-devel libjpeg-devel zlib-devel
- wordpress后台添加左侧边栏菜单如何操作
我们有时为了方便操作会把一些特定的链接添加到wordpress后台左侧菜单栏中,这个要如何实现呢?其实不会很难,使用两个WordPress内置函数就可以解决问题,分别是add_menu_page()和 ...
- 01-docker入门-安装docker
注意: ubuntu 安装 docker前提是要替换好 Ubuntu 的安装源. 安装步骤: P1: 正常开始 sudo apt-get update sudo apt-get -y insta ...
- ASP.NET中IOC容器Autofac(依赖注入DI 控制反转IOC)
IOC的一个重点是在程序运行中,动态的向某个对象提供它所需要的其他对象.这一点是通过DI来实现的.Autofac则是比较流行的一款IOC容器. IoC和DI有什么关系呢?其实它们是同一个概念的不同角度 ...
- selenium--操作JS弹框
前戏 我们常见的弹框有三种,一种是alert弹框,一种是prompt弹框,还有一种是confirm弹框那他们有什么不同呢?不同点就是他们长的不一样,alert弹框有一段文字和一个确定按钮,如下 在来看 ...
- 网络协议 4 - 交换机与 VLAN:拓扑结构
上一次,我们通过宿舍联网打魔兽的需求,认识了如何通过物理层和链路层组建一个宿舍局域网.今天,让我们切换到稍微复杂点的场景,办公室. 在这个场景里,就不像在宿舍那样,搞几根网线,拉一拉,扯一扯就 ...
- [FJOI2018]所罗门的宝藏
大概是最后一篇题解,其实只是想颓废一下打个故事 据古代传说记载,所罗门王即是智慧的代表,又是财富的象征.他建立了强大而富有的国家,聚集了大批的黄金象牙和钻石,并把这些价值连城的珍宝藏在一个神秘的地方, ...