`

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⊙)…

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics