请问C#中有没有判断数组元素重复,或如何去除重复呀?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请问C#中有没有判断数组元素重复,或如何去除重复呀?相关的知识,希望对你有一定的参考价值。
C#数组去除重复元素算法:通过遍历原数组中的每一个元素,将元素添加到新的泛型listString中,如果listString已经包含了就不添加,当遍历完原数组,泛型中保存的就是去重后的结果了。
由于需求对结果的元素序列没有任何要求,采取了下列算法来提高效率
string[] stringArray = ...因为是从文件读取的,这里省略了...
List<string> listString =new List<string>();
Array.Sort(stringArray );//排序数组
int MaxLine = stringArray.Length;
#region 单独计算第一个
if (sourceData[0] != stringArray[1])
listString.Add(stringArray[0]);
#endregion
for (int i =1; i < MaxLine; i++)
if (sourceData[i] != stringArray[i-1])
listString.Add(stringArray[i]);
思路是:首先对数组进行排序,这样相同的数组就排列在了一起。然后遍历原数组,一次取出当前元素和上一个元素,如果2个元素相等就跳过,不相等就将其元素的保存到泛型listString中。(第一次运行的时候,前一个元素为空,所以把第一个元素单独拿出来处理) 参考技术A arrayList arr = new arrayList();
arr.Add("hello");
arr.Add("C++");
arr.Add("hello");
arr.Add("hello");
arr.Add("C++");
arr.Add("C#");
arr.Add("Java");
arr.Add("C++");
arr.Add("C++");
arr.Add("C++");
arr.Add("Java");arrayList arrCopy = new arrayList();//定义一个arr的副本
arrayList al = new arrayList();//定义目标数组
for( int i=0;i<arrCopy.Count;i++ )//从头开始,选择一个arr[i]与后边的进行比较
for( int j=i+1;j<arrCopy.Count;j++ )//向后遍历
if( arrCopy[i]==arr[j] && arrCopy[i].ToString()!="copy!")
arr[j]="copy!";//如果有重复的,在副本中做标记
if( j==arrCopy.Count-1 && arrCopy[i].ToString()!="copy!" )
al.Add(arr[i]);//遍历到最后一个,如果不是副本,进入目标数组
for( int i=0;i<al.Count;i++ )
System.Console.WriteLine(al[i].ToString());
java怎么判断数组中有重复的元素
1、写两个for循环,外层for循环每取出一个值,都和内层for循环的值做比较,出现两次及以上相同的情况,即有重复元素。当然这种效率比较低。2、写两个for循环,外层for循环取第一个值的时候,和内层循环的第二个值及之后的值比较;外层for循环取第二个值的时候,和内层循环的第三个值及之后的值比较……
以此类推,出现一次及以上相同的情况,即有重复元素。
过程就是如此,代码自己实现吧! 参考技术A //用于存放数组中出现相同的元素
Set<String> set= new HashSet<String>();
//写一个方法把数组和set作为参数传过去
public boolean compare(String[] strs,Set set)
boolean result = false;
//从第一个元素开始比较元素是不是有相同的出现
for(int i=0;i<strs.length;i++)
for(int j=i+1;j<strs.length;j++)
//如果元素相同,保存到set中
if(strs[i].equals(strs[j]))
set.add(strs[i]);
result = true;
return result;
set中保存的就是出现相同的元素本回答被提问者采纳
以上是关于请问C#中有没有判断数组元素重复,或如何去除重复呀?的主要内容,如果未能解决你的问题,请参考以下文章