在一个TEST。TXT文件中存在10000条URL, 比如HTTP://WWW。1JU。ORG/ 
怎么把最10000条URL中的重复URL消除掉, 请用考虑时间, 和空间问题, 用有效的方法解这道题

解决方案 »

  1.   

    此回复为自动发出,仅用于显示而已,并无任何其他特殊作用
    楼主【eimhee】截止到2008-07-16 17:27:38的历史汇总数据(不包括此帖):
    发帖的总数量:76                       发帖的总分数:1917                     每贴平均分数:25                       
    回帖的总数量:140                      得分贴总数量:33                       回帖的得分率:23%                      
    结贴的总数量:65                       结贴的总分数:1472                     
    无满意结贴数:9                        无满意结贴分:160                      
    未结的帖子数:11                       未结的总分数:445                      
    结贴的百分比:85.53 %               结分的百分比:76.79 %                  
    无满意结贴率:13.85 %               无满意结分率:10.87 %                  
    楼主加油
      

  2.   

    是一行一行的?
    1W条?不多的。
    读入内存,转换成大写,放入HashSet,然后取出来回写到文件,重复的就已经去掉了。
      

  3.   

    同意。
    用HashSet已经可以了,Sun肯定对它做过优化了,再想提高性能的话只能是事倍功半了。
      

  4.   

    别用HASHMAP, HASHSET, HASHTABLE啊
      

  5.   

    那你这样试试
    用一个bit表示一个URL是否存在,14bit中无符号整数有2^14个,共需16384bits,每个字节8 bits,需要16384/8 = 2M字节
    1,申请2M内存,作为一个URL是否存在的标记flag,全清0 
    2,设置记数器 count,清0 
    3,读入一个URL,查看相应flag是否为0,如果为0,flag置1,count加1,如果为1,做相应的清除工作 
    4,重复3,直到所有URL处理完毕
      

  6.   

    先变大写,把hash排下序,然后相邻的比较一下,equals的清掉
      

  7.   


    如何“查看相应flag”,如何去保存一个一个url也2M内存中的某一位的对应关系?
      

  8.   

    不过,
    百度曾经出过:给你a、b两个文件,各存放50亿条url,每条url各占用64字节,内存限制是4G,让你找出a、b文件共同的url
    其中就用到计算HASH值,按照不同的HASH段进行处理,
      

  9.   

    Java已经对hashset作了优化了 为什么不用呢?
      

  10.   

    时间和空间蛮矛盾的,要是考虑到空间问题就用9楼的比较好。时间问题嘛还是用hashset
      

  11.   

    14bit中无符号整数有2^14个  这个14bit怎么得来的