`

0808--求出现次数最多的n个url

阅读更多
 
import java.util.*; 
import java.io.*; 

class Url{ 
     String url; 
     int count; 
     public void setUrl(String url){ 
          this.url=url; 
     } 
     public void setCount(int count){ 
          this.count=count; 
     } 
     public String getUrl(){ 
          return this.url; 
     } 
     public int getCount(){ 
          return this.count; 
     } 

} 

public class MaxK{ 

     Map<String,Integer> map; 

     public MaxK(){ 
          map=new HashMap<String,Integer>(); 
     } 

     public int partion(int low,int high,Url[]array){ 
          int i=low; 
          int j=high; 
          int c; 
          c=array[j].getCount(); 
          Url tmp=array[j]; 
          while(i!=j){ 
               while((array[i].getCount()<c)&&(i<j)){ 
               i++; 
          } 

          if(i<j){ 
               array[j]=array[i]; 
               j--; 
          } 

          while((array[j].getCount()>c)&&(i<j)){ 
               j--; 
          } 

          if(i<j){ 
               array[i]=array[j]; 
               i++; 
          } 

     } 
          array[i]=tmp; 
          return i; 
     } 

     public void getMaxK(int k,Url[] array){ 
          int low=0,i=0; 
          int len=array.length; 
          int high=len-1; 

          while(true){ 
               i=partion(low,high,array); 
               if(i==(k-1)){ 
                    System.out.println(i+"=="+(k-1)); 
                    break; 
               } 

          if(i<(k-1)){ 
               low=i+1; 
          }else{ 
               high=i-1; 
          } 
     } 

     System.out.println("\nthe sorted array:\n"); 
     for(i=0;i<k;i++){ 
          System.out.println(array[i].getUrl()); 
     } 
  } 


     public Url[] setUrlArray(String path){ 
          try{ 
               BufferedReader br=new BufferedReader(new FileReader(path)); 
               String str; 
               Integer i; 

               while((str=br.readLine())!=null){ 
                    if(map.containsKey(str)){ 
                         int count=map.get(str).intValue(); 
                         i=new Integer(count+1); 
                   }else{ 
                         i=new Integer(1); 
                   }
                    map.put(str,i); 
              } 
          }catch(Exception ex){ 
          } 

          int n=map.size(); 
          int i=0; 
          Url[] array =new Url[n]; 
          Iterator it=map.entrySet().iterator(); 

          while(it.hasNext()){ 
               Map.Entry me=(Map.Entry)it.next(); 
               array[i]=new Url(); 
               array[i].setUrl((String)me.getKey()); 
               array[i].setCount(((Integer)me.getValue()).intValue()); 
               System.out.println("array["+i+"].url="+(String)me.getKey()+","+"array["+i+"].count="+((Integer)me.getValue()).intValue()); 
               i++; 
          } 
          return array; 
     } 


     public static void main(String[] args){ 
          MaxK mk=new MaxK(); 
          Url array[]=mk.setUrlArray("urls.txt"); 
          mk.getMaxK(3,array); 
          int len=array.length; 
          int i=0; 
          while(i<len){ 
               System.out.println("array["+i+"].url="+array[i].getUrl()+","+"array["+i+"].count="+array[i].getCount()); 
          i++; 
          } 
     } 

} 

 

 

用shell实现:

cat url.txt|sort|uniq -c|sort

 

shell总是那么强大,(⊙o⊙)…

 

分享到:
评论

相关推荐

    topn:最多出现的网址的TopN

    加载每个小文件,通过dict计算url的出现次数,然后通过堆获取topn出现次数。 合并步骤2中所有出现的topn事件,并获得最终的topn并进行打印。 复杂度分析 N是网址数。 NS是分割文件的数量,等于1009。K是我们想要的...

    (源码)基于Python的URL计数与TopN提取系统.zip

    本项目旨在解决从100GB的URL数据中统计出出现次数最多的Top 100 URL的问题。由于内存限制仅为1GB,项目采用了高效的分布式处理和优化策略,确保在有限的资源下高效完成任务。 ## 项目的主要特性和功能 1. 数据拆分...

    十道海量数据处理面试题(卷).docx

    最后队列中的N个元素即为出现次数最多的N个数据。 10. **统计文本文件中最频繁的词** 采用TF-IDF算法,首先对每个文件进行分词,然后计算每个词的词频(TF)和逆文档频率(IDF)。在Map阶段,计算TF,Reduce阶段...

    各大单位的面试题

    - 对每个小文件建立一个哈希表,统计每个IP出现的次数,并记录每个文件中出现次数最多的IP。 - 从1024个文件中找出总体上出现次数最多的IP。 ### 5. 按照查询频率排序用户查询 #### 题目描述 有10个各含1G数据的...

    071204awk应用1

    END {for(url in counts) print counts[url], url}'`: 计算访问量最多的URL。 - `cat access.log|awk '{print $11}'|sort|uniq -c|sort -nr|head -20`: 输出访问最多的20个文件或页面。 - `cat access.log |awk '...

    海量数据处理:十道面试题与十个海量数据处理方法总结

    **1、海量日志数据,提取出某日访问百度次数最多的那个IP** - **问题概述**: 给定一天内的海量日志数据,从中找出访问百度次数最多的IP地址。 - **解决方案**: - **初步思路**: 将所有IP地址写入一个大文件,考虑...

    wget使用方法

    `--tries`设置重试次数,例如`--tries=5`表示最多尝试5次。 **八、安全与代理** 如果你需要通过HTTP代理下载,可以使用`--http-proxy`或`--proxy-user`和`--proxy-password`设置。对于HTTPS代理,使用`--...

    十道海量数据处理面试题与十个方法大总结

    一、海量日志数据,提取出某日访问百度次数最多的那个 IP 这是一个典型的 hash 表应用问题,解决方案是使用 hash 表将 IP 直接存入内存,然后进行统计。在实际操作中,可以将大文件映射为多个小文件,然后找出每个...

    面试题目-大数据量海量数据处理.pdf

    8. **出现次数最多的N个数据**:使用Hash映射+堆结构,先统计每个元素的频率,然后用最小堆维护N个最大频率的元素。 9. **去重字符串**:可以使用HashSet或Trie树,分批处理数据,去除重复。 10. **最频繁词的前10...

    大数据量,海量数据处理

    解决方法是使用HashMap来统计每个IP的访问次数,然后使用堆排序来输出访问次数最多的IP。 5. 给定2.5亿个整数,需要找出不重复的整数,内存空间不足以容纳这2.5亿个整数。解决方法是使用位数组+Bloom filter来判断...

    WordFrequency源码

    本文将深入剖析名为"WordFrequency"的源码,理解其如何实现根据URL查询网页中出现次数最多的前N个单词的功能。通过这个程序,我们可以学习到关于文本处理、分词技术以及频率统计的相关知识。 首先,词频统计是指在...

    Python程序设计基础语法-分割字符串.pptx

    - `maxsplit`:指定最多分割的次数。如果设置为-1,表示无限制,即分割所有出现的分隔符。 例如,有一个字符串`"Hello, World! How are you?"`,我们可以使用逗号作为分隔符进行分割: ```python s = "Hello, ...

    十道海量数据处理面试题(卷).doc

    7. 上亿数据统计出现次数最多的 N 个数据: 使用优先队列(最小堆)或者 Top-K 算法,每次新数据出现时更新堆。 8. 判断一个数是否在 40 亿个数中: 类似于第6题,可以构建布隆过滤器,但考虑到误判率要求更低,...

    经典面试题——海量数据库

    - **访问IP统计**:面对海量日志数据,可以通过哈希IP到Bit-Map,统计每个IP的出现次数,找出访问次数最多的IP。 以上技术在大数据场景下尤其重要,它们能够在有限的内存资源下处理海量数据,提供高效且节省空间的...

    大数据面试题2.docx

    接下来的任务是对这些结果进行排序,并选出出现次数最多的前N个URL。 ##### 代码实现 - **Mapper**: 直接传递上一阶段的结果。 - **Reducer**: 对URL进行排序,并选取前N个。 具体的代码实现如下: ```java ...

    wget使用说明

    其中,`URL-list` 是要下载的文件或网页的 URL 列表。 ### 常用参数 - `-r` 或 `--recursive`:递归下载。对于 HTTP 网站,会下载指定文件及其引用的所有文件;对于 FTP 网站,会下载指定目录内的所有文件。 - `-N...

    面试中的大数据处理

    问题实例:海量日志数据,提取出某日访问百度次数最多的那个IP。IP的数目还是有限的,最多2^32个,所以可以考虑使用hash将ip直接存入内存,然后进行统计。 3.bit-map: Bit-map是一种常见的大数据处理方法,适用...

    正则表达式大全.docx

    - **`{m,n}`**:限定重复次数,表示前面的字符最少出现 m 次,最多出现 n 次。 - **`[a-zA-Z]`**:匹配任意一个英文字母。 - **`\d`**:匹配数字。 - **`\D`**:匹配非数字。 - **`\w`**:匹配字母、数字或下划线。 ...

    处理大量数据

    问题实例:海量日志数据,提取出某日访问百度次数最多的那个 IP。IP 的数目还是有限的,最多 2^32 个,所以可以考虑使用 hash 将 ip 直接存入内存,然后进行统计。 3. bit-map bit-map 是一种可进行数据的快速查找...

    正则表达式的使用

    - `{n,m}`:匹配至少 n 次,最多 m 次。 5. **分组与捕获**:使用括号 `()` 来创建捕获组。 - `(pattern)`:将 pattern 包围起来,作为一个整体进行匹配。 6. **非捕获组**:使用 `?:` 来创建非捕获组。 - `(?:...

Global site tag (gtag.js) - Google Analytics