如何判断/检查一个集合(List<string>)中是否有重复的元素-程序员宅基地

技术标签: c#  java  数据库  

问题描述

在.NET/C#应用程序编程开发中,如何判断一个字符串集合List<string>中是否有重复的元素?

假如有如下的List<string>集合:

var lstNames = new List<string> { "A", "B", "A","C" };

现在有一个简单的判断/检查lstNames字符串集合中是否有重复元素的实现,如下:

if (lstNames.Distinct().Count() != lstNames.Count())
{
    Console.WriteLine("List contains duplicate values.");
}

在.NET/C#应用程序编程开发中,是否还有更好的实现方式,来检查/判断一个字符串集合中是否有重复元素呢?

方案一

使用LINQGroupBy()Any()方法实现,如下:

lstNames.GroupBy(n => n).Any(c => c.Count() > 1);

方案二

使用循环和一个HashSet来实现,如下:

var lstNames = new List<string> { "A", "B", "A" ,"C"}; var hashset = new HashSet<string>(); foreach(var name in lstNames) { if (!hashset.Add(name)) { Console.WriteLine("List contains duplicate values."); break; } } 

方案三

以下是一个基于HashSet<T>进行扩展的静态扩展方法,如下:

public static bool AreAnyDuplicates<T>(this IEnumerable<T> list)
{
    var hashset = new HashSet<T>(); return list.Any(e => !hashset.Add(e)); }







 

转载于:https://www.cnblogs.com/Artist007/p/10973883.html

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_30788619/article/details/99403265

智能推荐

python 计算小于某个数_python – numpy argmax,最大值小于某个数字-程序员宅基地

文章浏览阅读1.6k次。我有一个numpy数组:myArrayarray([[ 1. , nan, nan, nan, nan],[ 1. , nan, nan, nan, nan],[ 0.63 , 0.79 , 1. , nan, nan],[ 0.25 , 0.4 , 0.64 , 0.84 ,..._python中如果数组中的元素都小于1则

什么是数字证书和数字证书认证机构和数字根证书,HTTPS认证流程和对称加密-程序员宅基地

文章浏览阅读1.4k次,点赞18次,收藏13次。什么是数字证书和数字证书认证机构和数字根证书,HTTPS认证流程和对称加密是用于公开密钥基础建设的电子文件,用来证明公开密钥拥有者的身份。HTTPS进行认证就是用数字证书自签证书(相对于个人证书)服务器证书(用于通过安全套接字层 [SSL] 技术在服务器和客户机之间建立安全会话)证书的内容包括:电子签证机关的信息、公钥用户信息、公钥、权威机构的签字和有效期等等。目前,证书的格式和验证方法普遍遵循X.509国际标准。从ca获取的数字证书。_数字证书

1、串口(UART/COM/TTL/RS232/RS485)-程序员宅基地

文章浏览阅读2.1w次,点赞30次,收藏344次。嵌入式MCU串口通信的基础知识_串口

Linux Commands O– Q_linux openvt-程序员宅基地

文章浏览阅读253次。有时间就学习一下jimmy师兄的笔记,收获很多,但是呢,年纪大了,脑子真的容易忘记事情,今天看了,没几台又给忘记了,分享的这些linux命令可以打印出来贴寝室墙上,每天回来都看看:Command DescriptionobjcopyCopy and translate object files.objdumpDisplay information from object files.o..._linux openvt

s-function简介和示例-程序员宅基地

文章浏览阅读776次。simulink模型。_s-function

http隧道 java_使用java语言实现http隧道技术-程序员宅基地

文章浏览阅读119次。该楼层疑似违规已被系统折叠隐藏此楼查看此楼/***Getaparametervalue**@paramkeyString*@paramdefString*@returnString*/publicStringgetParameter(Stringkey,Stringdef){returnisStandalone?System.getProperty(ke..._java http隧道

随便推点

ring0下的 fs:[124]_nsfs124-程序员宅基地

文章浏览阅读930次。 反汇编内核函数的时候经常会看到mov eax, fs:[124].一直没弄清楚fs寄存器在ring0存放的是什么。今天查了下资料。 fs寄存器在Ring0中指向一个称为KPCR的数据结构,即FS段的起点与KPCR结构对齐。而在Ring0中fs寄存器一般为0x30。 这样看KPCR的数据结构:nt!_KPCR +0x000 NtTib : ..._nsfs124

高德地图打包后不能使用,高德导航View不显示,高德地图导航组件黑屏的问题;_amap.amapwx打包成安卓后无法使用-程序员宅基地

文章浏览阅读6.2k次。在现在的APP中地图真的很常见,我们在去使用是一般都会选择一些三方的API,像百度、高德等等。。。在集成的过程中,难免会遇到一些问题,大部分问题我们仔细的阅读开发文档都能解决的;但是!!!问题出现后就没心情去细细的看文档了,总想着去搜索问题看有没有类似的;主要问题:打包后地图出现问题,绝大部分都是因为KEY的原因,我们使用正式签名文件中的SHA1去创建一个KEY替换到代码中的那个就行了;而我的问题..._amap.amapwx打包成安卓后无法使用

HTML5与微信开发(2)-视频播放事件及API属性_微信开发者工具视频快进-程序员宅基地

文章浏览阅读8.6k次,点赞2次,收藏2次。HTML5 的视频播放事件想必大家已经期待很久了吧,在HTML4.1、4.0之前我们如果在网页上播放视频无外乎两种方法: 第一种:安装FLASH插件或者微软发布的插件 第二种:在本地安装播放器,在线播放组件之类的 因为并不是所有的浏览器都安装了FLASH插件,就算安装也不一定所有的都能安装成功。像苹果系统就是默认禁用FLASH的,安卓虽然一开始的时候支持FLASH,但是在安卓4.0以后也开始不_微信开发者工具视频快进

JedisConnectionException Connection Reset_jedisconnectionexception: java.net.socketexception-程序员宅基地

文章浏览阅读5.4k次,点赞3次,收藏4次。在使用redis的过程常见错误总结1.JedisConnectionException Connection Reset参考这边文章:Connection reset原因分析和解决方案https://blog.csdn.net/cwclw/article/details/527971311.1问题描述Exception in thread "main" redis.clients...._jedisconnectionexception: java.net.socketexception: connection reset

Lua5.3版GC机制理解_lua5.3 gc-程序员宅基地

文章浏览阅读8.3k次,点赞8次,收藏42次。目录1.Lua垃圾回收算法原理简述2.Lua垃圾回收中的三种颜色3.Lua垃圾回收详细过程4.步骤源码详解4.1新建对象阶段4.2触发条件4.3 GC函数状态机4.4标记阶段4.5清除阶段5.总结参考资料lua垃圾回收(Garbage Collect)是lua中一个比较重要的部分。由于lua源码版本变迁,目前大多数有关这个方面的文章都还是基于lua5.1版本,有一定的滞后性。因此本文通过参考当前..._lua5.3 gc

手机能打开的表白代码_能远程打开,各种手机电脑进行监控操作,最新黑科技...-程序员宅基地

文章浏览阅读511次。最近家中的潮人,老妈闲着没事干,开始学玩电脑,引起他的各种好奇心。如看看新闻,上上微信或做做其他的事情。但意料之中的是电脑上会莫名出现各种问题?不翼而飞的图标?照片又不见了?文件被删了,卡机或者黑屏,无声音了,等等问题。常常让她束手无策,求助于我,可惜在电话中说不清,往往只能苦等我回家后才能解决,那种开心乐趣一下子消失了。想想,这样也不是办法啊, 于是,我潜心寻找了两款优秀的远程控制软件。两款软件...

推荐文章

热门文章

相关标签