如何判断/检查一个集合(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

智能推荐

在Windows上一键编译各种版本的Protobuf-程序员宅基地

文章浏览阅读6次。所需工具 : cmake for windows 和 git for windows原理:protobuf 是google的一个开源项目,其源代码在github上可以下载到,并且源码都采用cmake来构建,所以我们可以把源码下载到本地,然后了利用cmake构建本地工程,然后编译.步骤一:下载源码  复制以下代码,保存到download_protobuf_source.bat 文件中...

Unity热更新笔记(三)Addressable+ILRuntime 实现代码热更_unity dll 和 addresable 一起使用-程序员宅基地

文章浏览阅读1.6k次,点赞2次,收藏13次。系列文章目录(一)ILRuntime基础使用(二)Addressable基础使用目录系列文章目录简介流程DLL 转换代码DLL 加载代码简介把热更项目的 DLL 作为 addressable 的资源来实现热更新流程资源部分(1)addressable 是不支持 dll 的,所以需要把 dll 文件加工成 addressable 支持的格式(2)直接 File.ReadAllBytes 读取成 bytes 然后 File.WriteAllBytes 保存(3)保存文件的后缀为 .b_unity dll 和 addresable 一起使用

g2o optimize_如何在WordPress中添加Google Optimize(2种简单方法)-程序员宅基地

文章浏览阅读154次。g2o optimizeAre you looking to add Google Optimize on your WordPress site? 您是否要在WordPress网站上添加Google Optimize? Google Optimize is a free tool by Google that helps website owners optimize their site..._google optimize

Java面试总结,mybatis源码面试题-程序员宅基地

文章浏览阅读936次,点赞18次,收藏15次。OSI七层模型都是什么举例网络协议,都在哪个层TCP UDP区别TCP如何实现可靠连接Time_Wait中2*msl 为什么如果TCP突然接收方故障 会发生什么HTTP状态码 含义,503 504,200GET POST区别一个url从输入到访问经过了哪些过程说一说TCP三次握手和四次挥手。

Qt4.6 QMessageBox 使用大全_qmessagebox使用-程序员宅基地

文章浏览阅读2.1k次。使用方式为/***消息框的使用 *********************///提示框//QMessageBox::about(this,"about me","helloworld");// QMessageBox::aboutQt(this,"about me"); //输出关于Qt的详细信息//警告窗口//int bs= QMessageBox::critica_qmessagebox使用

互联网的下半场:社交媒体与消费场景革命_社交媒体推动消费场景潮流化-程序员宅基地

文章浏览阅读740次。作者:幻梦邪魂全文共 3450 字,阅读需要 7 分钟———— / BEGIN / ————亚里士多德说:人们为了生存来到了城市,为了生活的更好,留在了城市。那么,亚里士多德的“城市”又是什么?它就是一种更高效的、现代化的,分工协作的人类“消费场景”。随着人类文明的发展以及科学技术的进步,人们已经基本完成了从生理、安全需求到社会、尊重需求的过度,并在不断的尝试自我超越——尤其是在互联网出现后,短短_社交媒体推动消费场景潮流化

随便推点

boost intrusive_ptr指针_返回boost::intrusive_ptr的空指针-程序员宅基地

文章浏览阅读829次。intrusive_ptr直接进入正题吧在boost库中经常会用到shared_ptr这个智能指针,在正常情况下如下:A *p = new A();boost::shared_ptr(A) pa(p);boost::shared_ptr(A) pa0(pa);这样使用是毫无问题的,但是如果是这样使用如下:A *p = new A();boost::sha_返回boost::intrusive_ptr的空指针

bootstrap selectpicker 通过代码指定选中值_selectpicker设置选中值-程序员宅基地

文章浏览阅读2.1w次,点赞3次,收藏3次。$('#subjectno').selectpicker('val',(row.subjectno));row.subjectno替换成你要指定的值,当然前提必须要在select已有的数据中_selectpicker设置选中值

【亲测已解决】CentOS7 ifconfig commend not fount(命令找不到)_dhclient: command not found-程序员宅基地

文章浏览阅读225次。1、输入命令dhclient,可以自动获取一个IP地址,再用命令ip -a addr查看IP2、然后输入 yum search ifconfig查找符合这个命令的组件,查找到net-tools.x86_64,安装这个组件3、4、接下来安装组件yum installnet-tools.x86_645、安装成功后ifconfig,查看ip地址相关信息..._dhclient: command not found

纪念自己发布第一篇博客_如果你被所报考的单位聘用,单发表3分钟的感答案-程序员宅基地

文章浏览阅读189次。第一次写博客,一时间不知从何入手,从事软件工作已几年时间,各式各样的技术都只知皮毛,默然回首,自己丢弃的太多。今年突然醒悟,原来不管你愿不愿意承认,你就是一名技术人员,一个货真价实的码农,就算走向管理岗,也不论未来怎样发展,你的过去就是你的现在,我是一名java开发人员,一名技术人员,我的工作最开始的时候就是一个字母一个字母的编写出来的,我的路也是一行一行代码敲不来的。所以人不能忘本,应该脚踏实地,踏踏实实的,正视自己的不足,接受自己的缺陷,活得光明磊落,潇潇洒洒,不涂人间富贵,但求问心无愧。._如果你被所报考的单位聘用,单发表3分钟的感答案

使用多线程实现多个文件同步复制功能,并在控制台显示复制的进度,进度以百分比表示_使用多线程实现多个文件同步复制功能,并在控制台显示复制的进度,进度以百分比表示-程序员宅基地

文章浏览阅读2.7k次,点赞6次,收藏25次。题目:使用多线程实现多个文件同步复制功能,并在控制台显示复制的进度,进度以百分比表示。例如:把文件A复制到E盘某文件夹下,在控制台上显示“XXX文件已复制10%”,“XXX文件已复制20%”……“XXX文件已复制100%”,“XXX复制完成!”代码如下:1、Runnable接口方式package com.day505.testdemo.exam;import java.io.*;imp..._使用多线程实现多个文件同步复制功能,并在控制台显示复制的进度,进度以百分比表示

【TA100】Bloom算法_unity bloom-程序员宅基地

文章浏览阅读492次。● Bloom,也称辉光,是一种常见的屏幕效果● 模拟摄像机的一种图像效果,让画面中较亮的区域“扩散”到周围的区域中,造成一种朦胧的效果● 可以让物体具有真实的明亮效果● 可以实现光晕效果。_unity bloom

推荐文章

热门文章

相关标签