您的位置:首页 > 其它

关于一个去除重复数组的问题

2009-10-09 14:41 645 查看
最近一个朋友在找工作,偶尔问些关于C#的笔试题,其中有一个是关于去除一个数组中的重复数问题:如定义一个int型数组:

int[] testNum={1,1,3,5,6,3,6,9};

要求写一个函数得到如下数据[1,3,5,6,9],即重复出现的数只保存第一次出现的那一个数据,本来很简单的一个问题,但是不留心还是会遇到些小麻烦,在这里主要采用array,hashtable以及arraylist几个东西的用法吧:

开始只想到用array,后来才发现array分配的内存是连续的。故没有remove(at)、add等属性,需要重新构造一个数组,写出来貌似比较麻烦

private int[] DuplicatiNum(int[] intArray)

{

int[] retArray = new int[intArray.Length];

Hashtable hshArray = new Hashtable();

int intIndex = 0;

foreach (int p in intArray)

{

if (!hshArray.ContainsKey(p))

{

hshArray.Add(p, p);

retArray[intIndex] = p;

intIndex++;

}

}

int[] arrReturn = new int[intIndex];

for (int i = 0; i < intIndex; i++)

{

arrReturn[i] = retArray[i];

}

hshArray.Clear();

hshArray = null;

return arrReturn;

}

后来发现用arraylist处理方便多了:

private int[] UsingArrayList(int[] intArray)

{

ArrayList arrInt = new ArrayList();

Hashtable hshArray = new Hashtable();

foreach (int p in intArray)

{

if (!hshArray.ContainsKey(p))

{

hshArray.Add(p, p);

arrInt.Add(p);

}

}

hshArray.Clear();

hshArray = null;

return (int[])arrInt.ToArray(typeof(int));

}

在新建的aspx页面里面测试通过,留个纪念吧,也算是加深下对array,arraylist和hashtable的理解吧

protected void Page_Load(object sender, EventArgs e)

{

int[] testNum={1,1,3,5,6,3,6,9};

int[] testDuplicate = DuplicatiNum(testNum);

int[] testArrayList = UsingArrayList(testNum);

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: