一个数组,删除其中相同的元素(保留一个),比如一个数组:
string[] str_arr = { "A","A","A","B","C","C","D", ...(此处略去几万个元素) };
// 处理后的结果是:
str_arr = {"A","B","C","D",...(此处略去几万元素)};
一个个循环比较的笨办法我倒是知道,但是有几万个元素啊,还有没有更好的办法呢?(顺序不限,实现语言不限,最好是C#的),哪位仁兄能帮帮忙呢?
string[] str_arr = { "A","A","A","B","C","C","D", ...(此处略去几万个元素) };
// 处理后的结果是:
str_arr = {"A","B","C","D",...(此处略去几万元素)};
一个个循环比较的笨办法我倒是知道,但是有几万个元素啊,还有没有更好的办法呢?(顺序不限,实现语言不限,最好是C#的),哪位仁兄能帮帮忙呢?
解决方案 »
- HttpWebResponse.Close()导致httplook无响应?什么原因?
- wince上用什么控件来展示数据
- MSshart 图表如何设置网格线的数量个间距
- 关于程序多次运行的问题
- 求VS2005开发对SYBASE,DB2数据操作的相关代码【陆续加分】
- 一个VS2005中的 dataset 生成问题
- 怎么将图片(或mp3)写到swf文件中,通过C#
- 朋友们向我推荐几本C#书吧,关于程序扩展,升级(补丁升级,在线升级)方面的,半小时结贴
- mm非常非常急的问题!在C#中需要关闭连接吗,如果不关闭,会不会影响访问速度!
- 请教ContextMenuScript的问题
- GDI画图时 遇到因像素不能整除而出现图形位置不对,该如何解决像素是小数的问题?在线等...
- FileUpLoad问题,请教啊~~~~我是新手~~
或IEqualityComparer
List<string> list = new List<string>();
foreach(string s in arr)
{
if(list.Contains(s)) continue;
list.Add(s);
}
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中。(第一次运行的时候,前一个元素为空,所以把第一个元素单独拿出来处理)
* 本内容使用CSDN 小秘书回复 *
* 每天回帖即可得10分可用分! *
*****************************[/align]
* 本内容使用CSDN 小秘书回复 *
* 每天回帖即可得10分可用分! *
*****************************[/align]
方法一: string[] str_arr = { "A", "A", "A", "B", "C", "C", "D", };
Dictionary<string, object> tmp = new Dictionary<string, object>();
for(int i = 0;i<str_arr.Length;i++)
{
try
{
tmp.Add(str_arr[i], null);
}
catch { };
}
string[] str_arr1 = new string[tmp.Count];
tmp.Keys.CopyTo(str_arr1,0);
也可以用Linq,效果不知如何,你自己比较下。
方法二: string[] str_arr = { "A", "A", "A", "B", "C", "C", "D", };
var str_arr1 = str_arr.Distinct().ToArray();