请问C#中有没有判断数组元素重复,或如何去除重复呀?
2个回答
展开全部
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());}
2015-11-21 · 知道合伙人教育行家
关注
展开全部
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中。(第一次运行的时候,前一个元素为空,所以把第一个元素单独拿出来处理)
通过遍历原数组中的每一个元素,将元素添加到新的泛型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中。(第一次运行的时候,前一个元素为空,所以把第一个元素单独拿出来处理)
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询