有一个文本文件access.log,每一行记录了访问的url和对应的ip,写一个程序,找出独立ip访问量最大的前100个url

这篇博客介绍如何处理access.log文件,通过HashMap存储URL及其对应的IP HashSet,去除重复IP。然后使用迭代器循环遍历HashMap,获取访问量最大的前100个URL,而非采用小顶堆实现。
摘要由CSDN通过智能技术生成

有一个文本文件access.log,每一行记录了访问的url和对应的ip,写一个程序,找出独立ip访问量最大的前100个url。

思路

假设:log文件记录url和ip中间是一个空格隔开的
首先按行读取文本文件,将url作为key放入HashMap里面,value存放的是HashSet,set里面用来存放ip地址,目的是为了去重记录的ip地址,实际需要的其实是对应hashset里面ip的数量。
第二步,构建一个小顶堆,根据set里面的ip数量排序,拿到最大值
(没怎么写过小顶堆,主要是数据结构课上讲的,具体实现我的思路并不是按照第二步骤,而是使用迭代器循环遍历hashmap拿到访问最多的key-value,将url放进自定义的String数组里,并删掉map里的)

具体实现(非构建小顶堆)

Java代码实现.最后得到的TOP数组存放的就是访问量最大的前100个url

import java.io.*;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;

public class FindTop100 {
   
    public static void main(String[] args) throws IOException {
   
        FileInputStream fstream = new FileInputStream
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值