讨论一个问题:现在有两个数组或泛型集合,如何快速高效的把两个数组或集合中的元素进行对比,筛选出我需要的数据?比如,A类有Key(string 类型) 和 Count(int 类型) 两个属性,现在有两个 List<A> ,分别是 listA, listB ,现在
循环判断,如果 listB 中存在listA 中的某一个元素(也就是Key 相同),那么 listA 中该元素的 Count 属性值减去 
listB中该元素的 Count 值
,请问如何快速高效的对比和判断呢?
一般会想到用嵌套循环吧,有没有更好的呢?

解决方案 »

  1.   

    有个网站 能查出任何QQ都进了什么QQ群 他的数据是自己计算的还是数据库里的??  如果是数据库 那他是从哪下载的呢?  http://www.sjzwan.com/qun.aspx 这是net写的 你们看看
      

  2.   

    如果 listB 中存在listA 中的某一个元素(也就是Key 相同),那么 listA 中该元素的 Count 属性值减去 
    listB中该元素的 Count 值foreach(a in listA)
    {b = listB.Find(c=>c.Key==a.Key);
    if(b!=null)
    a.Count -= b.Count;}
      

  3.   

    不用linq就要稍微的变通一下。2次循环式在所难免,但如果两个数组,分别长度是m,n,嵌套就时间复杂度太高O(m*n)了。
    一定要自己写不是不行。
    1.对2个数组排序
    2.尽量跑2次,循环完毕
    至于如何写循环,没仔细想。和数据有关