c#:判断一个数组元素中否有重复元素
给定一个数组,判定该数组中是否有重复元素。
判定该数组中是否有重复元素总结出以下实现方案:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text; namespace Demo
{
class Program
{
/**
* 判定一个字符串中是否有重复的元素。
*/
static void Main(string[] args)
{
string[] arr = new string[] { "", "", "", "", "" };
bool isContainsSameItem = IsSameWithForeach(arr);
Console.WriteLine(isContainsSameItem); isContainsSameItem = IsSameWithSortAndCompare(arr);
Console.WriteLine(isContainsSameItem); isContainsSameItem = IsSameWithHashSet(arr);
Console.WriteLine(isContainsSameItem); isContainsSameItem = IsSameWithArrayContains(arr);
Console.WriteLine(isContainsSameItem); Console.ReadKey();
} /**
* 利用array.contains存储及判断是否存在重复数据
* **/
static bool IsSameWithArrayContains(string[] arr)
{
var newArr = new string[arr.Length];
var idx = ;
foreach (var i in arr)
{
if (false == newArr.Contains(i))
{
newArr[idx] = i;
idx++;
}
else
{
return true;
}
}
return false;
} /**
* 利用hasset的原理来实现
* **/
static bool IsSameWithHashSet(string[] arr)
{
ISet<string> set = new HashSet<string>(); for (var i = ; i < arr.Length; i++)
{
// 这里可利用该元素来实现统计重复的原理有哪些,及重复个数。
//bool state = set.Add(arr[i]); // 如果返回false,表示set中已经有该元素。
//Console.WriteLine(state);
set.Add(arr[i]);
} return set.Count != arr.Length;
} /**
*排序后,比较相邻的数据是否有重复的。
*/
static bool IsSameWithSortAndCompare(string[] arr)
{
// 先排序
Array.Sort(arr); //Console.WriteLine(string.Join(",", arr)); // 对比相邻的数据是否相同
for (var i = ; i < arr.Length - ; i++)
{
if (arr[i] == arr[i + ])
return true;
}
return false;
} /**
* 双层遍历
*/
static bool IsSameWithForeach(string[] arr)
{
for (var i = ; i < arr.Length - ; i++)
{
for (var j = i + ; j < arr.Length; j++)
{
if (arr[i] == arr[j])
return true;
}
} return false;
}
}
}
其中我个人觉得是:IsSameWithHashSet(string[] arr)效率最高。
测试性能,测试代码:
string[] arr = new string[];
// 给arr填充为一个没有任何重复数据的数组来,测试性能。
for (var i = ; i < arr.Length; i++)
{
arr[i] = i.ToString();
} System.Diagnostics.Stopwatch watch = new System.Diagnostics.Stopwatch();
watch.Start();
bool isContainsSameItem = IsSameWithForeach(arr);
Console.WriteLine(isContainsSameItem);
watch.Stop();
Console.WriteLine("IsSameWithForeach 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); watch = new System.Diagnostics.Stopwatch();
watch.Start();
isContainsSameItem = IsSameWithSortAndCompare(arr);
Console.WriteLine(isContainsSameItem);
watch.Stop();
Console.WriteLine("IsSameWithSortAndCompare 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); watch = new System.Diagnostics.Stopwatch();
watch.Start();
isContainsSameItem = IsSameWithHashSet(arr);
Console.WriteLine(isContainsSameItem);
watch.Stop();
Console.WriteLine("IsSameWithHashSet 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); watch = new System.Diagnostics.Stopwatch();
watch.Start();
isContainsSameItem = IsSameWithArrayContains(arr);
Console.WriteLine(isContainsSameItem);
watch.Stop();
Console.WriteLine("IsSameWithArrayContains 耗时:" + watch.ElapsedMilliseconds + "milliseconds"); Console.ReadKey();
测试效果:

c#:判断一个数组元素中否有重复元素的更多相关文章
- C#实现如何判断一个数组中是否有重复的元素
如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hashtable的Contains方法进行查找 /// ...
- C#实现如何判断一个数组中是否有重复的元素 返回一个数组升序排列后的位置信息--C#程序举例 求生欲很强的数据库 别跟我谈EF抵抗并发,敢问你到底会不会用EntityFramework
C#实现如何判断一个数组中是否有重复的元素 如何判断一个数组中是否有重复的元素 实现判断数组中是否包含有重复的元素方法 这里用C#代码给出实例 方法一:可以新建一个hashtable利用hasht ...
- div里面的元素垂直均匀分布 按钮引发地址栏出现问号 判断一个数组是否为空 div底部居中 路由传参接受参数
一个固定高度的div的子元素 在垂直 方向上平均分布 .important-dec{ height: 121px; flex-direction: column; display: flex; jus ...
- JS判断数组中是否有重复元素的方法
判断数组中是否有重复元素,最容易想到的方法是使用2重循环,逐个遍历,比较,但是这个是最慢,最笨的方法,百度得出了更好的方法. var ary = new Array("111",& ...
- C#中怎么判断一个数组中是否存在某个数组值
(1) 第一种方法: ,,}; ); // 这里的1就是你要查找的值 ) // 不存在 else // 存在 (2) 第二种方法: string[] strArr = {"a",& ...
- PHP如何判断一个数组是一维还是多维
什么叫多维数组呢?多维数组,本质上是以数组作为数组元素的数组. 二维数组又称为矩阵,一个数组的元素如果是一维数组,那么我们就称这个数组是二维数组. 怎么判断一个数组是否是一维数组呢?通过count() ...
- PHP如何判断一个数组是一维数组或者是二维数组?用什么函数?
如题:如何判断一个数组是一维数组或者是二维数组?用什么函数? 判断数量即可 <?php if (count($array) == count($array, 1)) { echo '是一维数组' ...
- delphi 判断一个数组的长度用 Length 还是 SizeOf ?
判断一个数组的长度用 Length 还是 SizeOf ?最近发现一些代码, 甚至有一些专家代码, 在遍历数组时所用的数组长度竟然是 SizeOf(arr); 这不合适! 如果是一维数组.且元素大小是 ...
- JS数组常用函数以及查找数组中是否有重复元素的三种常用方法
阅读目录: DS01:常用的查找数组中是否有重复元素的三种方法 DS02:常用的JS函数集锦 DS01.常用的查找数组中是否有重复元素的三种方法 1. var ary = new Array(&qu ...
随机推荐
- U盘量产大致研究思路
这几天搞了一波U盘量产,很多年前玩的基本都是些皮毛,比如U盘分区,U盘启动,以及台电U盘的光驱启动等等,这些现在看起来其实都不入眼,只是简单的将U盘分个区,并且没玩到主控上面去. 下面是一些自己的理解 ...
- HDU 4436 str2int (后缀自动机SAM,多串建立)
str2int Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others)Total S ...
- C# 对WinForm应用程序的App.config的使用及加密
原文地址:http://blog.163.com/zhou_zzq/blog/static/1019622120137621739874/ 我们在写C#应用程序时,在工程文件中放置一个app.co ...
- SQLCE使用
Windows Phone的本地数据库SQL Server CE是7.1版本即芒果更新的新特性,所以你要在应用程序中使用SQL Server CE数据库必须使用Windows Phone 7.1的AP ...
- How To Create A Local Repository For SUSE Linux
原文地址:http://candon123.blog.51cto.com/704299/1009294/ As you know,you can use the yum command to inst ...
- file is universal (4 slices) but does not contain a(n) armv7s slice
关于ld: file is universal (2 slices) but does not contain a(n) armv7s slice 升级了xcode之后,支持iOS6和iPhone5, ...
- css 滚动条样式
1,Overflow内容溢出时的设置 overflow 水平及垂直方向内容溢出时的设置 overflow-x 水平方向内容溢出时的设置 overflow-y 垂直方向内容溢出时的设置 以上三个属性设置 ...
- 【Devops】【docker】【CI/CD】jenkins 清除工作空间报错Error: Wipe Out Workspace blocked by SCM
jenkins 清除工作空间报错 错误如下: Error: Wipe Out Workspace blocked by SCM 解决方法: 进入jenkins服务器,进入workspace,手动rm ...
- Quartz:不要重复造轮子,一款企业级任务调度框架。
背景 第一次遇到定时执行某些任务的需求时,很多朋友可能设计了一个小类库,这个类图提高了一个接口,然后由调度器调度所有注册的接口类型,我就是其中之一,随着接触的开源项目越来越多,我的某些开发习惯受到了影 ...
- JKS和PFX文件相互转换方法
JKS(JavaKeysotre)格式和PFX(PKCS12)格式,是最常见的SSL证书格式文件,可以包含完整的证书密钥对,证书链和信任证书信息.PFX常用于Windows IIS服务器,JKS常用语 ...