2W个list<string>,每个list相当于有个ID,我要list两两比较,如果list里面的值有相同的情况,我就把两个list的id和比较相同的个数记录下来。
    例如 a是个list,b是个list,他们的值有相同的个数3个,我的数据库就记录,a,b,3;就这样不知道说清楚没?
    list1里面有 1,2,3,4,5
    list2里面有 2,6,7,8
    这个两个比较的话
    我的数据库里面就记录
    list1 , list2   1;
比较急,大家帮帮忙。怎么算速度才能最快。

解决方案 »

  1.   

    集合求交集...list1.Intersect(list2)
      

  2.   


                List<string> list1 = new List<string> { "1", "2", "3", "4", "5" };
                List<string> list2 = new List<string> { "2", "6", "7", "8", "9" };
                Console.WriteLine(list1.Intersect(list2).Count());
      

  3.   

    如果你的两个list是已经排序的可以这么做
    for(int i =0 ;i < list0.length;i++){
        for(int j =0 ; j< list1.length;j++){
           if(list0.get(i)<list1.get(j)) break;
           else{
              if(list0.get(i)=list1.get(j)) System.out.print(list0.get(i));
          }   
      }

    如果没有排序就直接遍历两遍对比吧,因为排序也是要花时间的
      

  4.   

    别从网上随便找个java的代码就贴上来好不好……
      

  5.   

    先将两个排序2*Olog(n),之后归并排序似的来一次遍历O(n)
    这个就可以了吧!或者排序一个,之后查找另一个,在排序的list中二分查找,复杂度差不多!
      

  6.   

    谢谢大家帮忙。
        关于list1与list2之间的比较,我现在已经解决了,但是另外就是有个问题。list1代表一个list.
        比如我从list1开始比较一值比到最后一个list20000,就要比较2W次,如果单一从一边开始比较就比较慢,我又个想法就是,从中间开始比起走,往两边出发.list1从1ist10000W往前比,一个往后比。这种两头比。会不会要快点呢。不知道这种想法正确不。能不能实现。
      

  7.   

    ++
    两个集合利用LINQ取交集.
      

  8.   

    lz说一下具体每个list里面有多少数据,另外所有不重复的string大概有多少个?2万个list逐个比较当然算是一种方法,但也许换一些更有针对性的索引结果,会有更好的效果
      

  9.   

                List<string> list1 = new List<string> { "1", "2", "3", "4", "5" };
                List<string> list2 = new List<string> { "2", "6", "7", "8", "9" };
                Console.WriteLine(list1.Intersect(list2).Count());
      

  10.   

    可以使用list.Intersect
    http://msdn.microsoft.com/zh-cn/library/bb460136%28v=VS.100%29.aspx