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方法在什么情况下才能去重,这个就不用我再多讲,针对集合对象去重默认实现将不再满足,于是乎我们需要自定义实现来解决这个问题,接下来我们详细讲解几种常见去重方案,孰好 ...
随机推荐
- 8皇后问题SQL求解(回溯算法)
问题 八皇后问题是一个古老而著名的问题,是回溯算法的典型例题.该问题是十九世纪著名的数学家高斯1850年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行.同一 ...
- PHP的SOLID设计原则
SOLID Design Principles, 这是一个比设计模式更高级别的概念, 以构建良好代码为目标,真正掌握了就是大师级别了. 我~~~仅知晓~ /*SOLID Design Principl ...
- 《MySQL性能优化篇》阅读笔记
建表的时候,不要用null赋默认值,如:字符串的设置'',数据类型的设为0,不要将null设为默认值. 在MySQL中没有 full [outer] join,用union代替 各种 JOIN SQL ...
- hdu2281&&POJ1320——Pell方程
hdu2281 输入一个 $N$,求最大的 $n$($n \leq N$)和 $x$,使得 $x^2 = \frac{1^2+2^2+...+n^2}{n}$. 分析: 将右边式子的分子求和化简,有: ...
- js如何安全的扩展系统函数
如果直接使用原型扩展系统函数,可能会和其他人的代码相互冲突 为了防止出现冲突,可以使用如下方法进行扩展: function MyArray(){ this.Name="MyArray&quo ...
- java 监控文件夹 WatchService
原文链接 :http://blog.csdn.net/lirx_tech/article/details/51425364 public class WacthFileUtil { public st ...
- R语言学习(基本知识)
0)查看帮助 library(help="ballgown") #查看包帮助 getwd() #查看当前工作目录 setwd('C:/Users/djx/Desktop/信号肽系统 ...
- axios post方式请求x-ww格式的数据
//使用axios时,要确定是json格式还是x-www格式的,axios默认是json格式的,如果是x-ww格式需要做如下配置: let url = "/hehe/site/getcomm ...
- RE:SB的SDOISB记
Day0 到了农大 进门看见hly 和myj一起乱%一通 一本爷的气场就是强大 晚上gryz搬砖三人组出去吃饭,开心>_< 吃完饭后去试机 手速比较快,写了一下ntt,lct,sa和一些小 ...
- Java集合详解8:Java集合类细节精讲,细节决定成败
<Java集合详解系列>是我在完成夯实Java基础篇的系列博客后准备开始写的新系列. 这些文章将整理到我在GitHub上的<Java面试指南>仓库,更多精彩内容请到我的仓库里查 ...