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 ...
随机推荐
- HQL的内连接查询
/** * HQL的内连接查询 * String hql="from Customer c inner join fetch c.linkmans"; */ @Test publi ...
- centos 7.2 安装mysql 修改 初始密码
# /etc/init.d/mysqld stop # mysqld_safe --user=mysql --skip-grant-tables --skip-networking &# my ...
- CentOS下多网卡绑定多IP段时导致只有一个会通的问题解决
原因:Linux默认开启了反向路由检查导致的,比如说外面访问eth0的网卡,而网关在eth1上,又或者从eth0出的流量,而网关在eth1上,此时会检查到网关不在同一个网卡上导致出不去,进不来的问题. ...
- 《Go语言实战》摘录:6.4 并发 - 锁住共享资源
6.4 锁住共享资源
- XML 高速入门总结
XML已经学习完了一段时间了.一直感觉知识比較琐碎,没有去好好总结.事实上越琐碎的知识也越须要我们去好好 理一下.将知识串起来.争取变得不再琐碎.以下是我学完xml画的一张图. 以下对XML进行一下简 ...
- 【leetcode】 Permutation Sequence
问题: 对于给定序列1...n,permutations共同拥有 n!个,那么随意给定k,返回第k个permutation.0 < n < 10. 分析: 这个问题要是从最小開始直接到k, ...
- godaddy 亚太机房 更换 美国机房 全过程(图)
其它我就不说了,直接干货... 如果要换机房的话,要先支付134元人民币.在哪里支付,怎么支付我就不说了,自己在后台找... 关键的地方来了:当你支付完134元,你回到步骤3会发现没有美国机房选择,呵 ...
- Mybatis-Plus 多表联查分页
原文:https://www.jianshu.com/p/759b6430ed5b 分析 使用的工程,依旧是 spring-boot,关于分页,官网给出了一个单表的 demo,其实多表分页实现原理相同 ...
- 【GitLab】gitlab上配置webhook后,点击测试报错:Requests to the local network are not allowed
gitlab上配置webhook后,点击测试报错: Requests to the local network are not allowed 操作如下: 报错: 错误原因: gitlab 10.6 ...
- C/C++中const关键字
http://blog.csdn.net/xdrt81y/article/details/24333335 今天在做一个趋势笔试题的时候,才让我有了系统把const关键字好好总结一下的冲动,因为这个关 ...