none
arraylist求救 RRS feed

  • 问题

  • 一个arraylist 存有n个结构体。结构体有2个字段,name,code,arraylist里有相同的
    我要做的是,找出相同的,保留一个,其余都删除了,请问怎么实现?


    for(int i=0;i<arraylist.Count;i++)
    {
        if(((struct)arraylist[i]).code==......)
    {
    //dosomething??????????
    }
    }
    2009年4月14日 5:11

答案

  • 用一个二层循环就能搞定

    另外建议你不要用ArrayList,改用List<>减少装箱拆箱的时间


    微软认证程序开发专家:Web Developer (MCPD: Web Developer)
    2009年4月14日 5:22
  • dictionary <int,struct> dic =new dictionary <int,struct>();
    
    for(int i=0;i<arraylist.Count;i++)
    {
        if(!dic.ContainsKey ((struct)arraylist[i]).code))
       {
            dic.Add(code,arraylist[i]).)
       }
    
    
    
    }
    dic.values 是你需要的结果   但是要用copyto拷贝到array  然后new 一个 arraylist  或者 list<struct>就可以了
    2009年4月14日 6:30
    版主
  • 你好!
         算法比较简单,我写了一个,我用的是char数组,你自己改成ArrayList就可以了,道理是一样的啊:
            static char[] RemoveDuplicateElement(char[] array)
            {
                char[] resultArray;
                int lastIndex = 0;
                for (int i = 1; i < array.Length; i++)
                {
                    if (array[i] != array[lastIndex])
                    {
                        array[lastIndex + 1] = array[i];
                        lastIndex++;
                    }
                }

                resultArray = new char[lastIndex + 1];
                for (int j = 0; j < lastIndex + 1; j++)
                    resultArray[j] = array[j];
                return resultArray;
            }
    周雪峰
    2009年4月14日 9:27
    版主

全部回复

  • 用一个二层循环就能搞定

    另外建议你不要用ArrayList,改用List<>减少装箱拆箱的时间


    微软认证程序开发专家:Web Developer (MCPD: Web Developer)
    2009年4月14日 5:22
  • dictionary <int,struct> dic =new dictionary <int,struct>();
    
    for(int i=0;i<arraylist.Count;i++)
    {
        if(!dic.ContainsKey ((struct)arraylist[i]).code))
       {
            dic.Add(code,arraylist[i]).)
       }
    
    
    
    }
    dic.values 是你需要的结果   但是要用copyto拷贝到array  然后new 一个 arraylist  或者 list<struct>就可以了
    2009年4月14日 6:30
    版主
  • 你好!
         算法比较简单,我写了一个,我用的是char数组,你自己改成ArrayList就可以了,道理是一样的啊:
            static char[] RemoveDuplicateElement(char[] array)
            {
                char[] resultArray;
                int lastIndex = 0;
                for (int i = 1; i < array.Length; i++)
                {
                    if (array[i] != array[lastIndex])
                    {
                        array[lastIndex + 1] = array[i];
                        lastIndex++;
                    }
                }

                resultArray = new char[lastIndex + 1];
                for (int j = 0; j < lastIndex + 1; j++)
                    resultArray[j] = array[j];
                return resultArray;
            }
    周雪峰
    2009年4月14日 9:27
    版主