热点网站统计
标题:热点网站统计 | 时间限制:1秒 | 内存限制:262144K | 语言限制:不限
企业路由器的统计页面,有一个功能需要动态统计公司访问最多的网页URL top N。请设计一个算法,可以高效动态统计Top N的页面。
import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); String content = ""; HashMap<String,Integer> map = new HashMap<>(); StringBuffer sb = new StringBuffer(); while(scanner.hasNext()){ content = scanner.nextLine(); try { int num = Integer.parseInt(content); List<String> list = new ArrayList<>(); map.forEach((k,v)->{ list.add(v+" "+k); }); list.sort((o1,o2)->{ int value1 = Integer.parseInt(o1.split(" ")[0]); int value2 = Integer.parseInt(o2.split(" ")[0]); if(value1 == value2){ String key1 = o1.split(" ")[1]; String key2 = o2.split(" ")[1]; return key1.compareTo(key2); }else{ // System.out.println(value1 + " "+value2); return value2 - value1; } }); for(int i=0;i<num;i++){ sb.append(list.get(i).split(" ")[1]).append(","); } sb.delete(sb.length()-1,sb.length()).append("\n"); }catch (Exception e){ if(map.containsKey(content)){ int value = map.get(content); map.put(content,value+1); }else{ map.put(content,1); } } } System.out.println(sb); } }