java - 查找一周登录两次的用户

标签 java algorithm data-structures

<分区>

XYZ 公司每天在一些日志文件中存储用户的日志信息。打印一周登录两次的用户。

示例:

weekday1.log

weekday2.log

weekday3.log

weekday4.log

weekday5.log

weekday6.log

weekday7.log

每个 log 文件都包含当天登录到 XYZ 站点的用户名。现在从上面的文件中搜索两次登录的用户名。

这个问题是我在面试中被问到的。 而且我有一个非常明显的顺序扫描文件的答案,因为我不太擅长 DS 和算法。有人可以提供一些有效的方法来查找。谢谢。

最佳答案

可以这样做:

首先,将你所有的用户ID和初始登录频率存储在二维数组中,例如:

    String [][] user = {{"john","0"}, {"bill","0"}, {"steve","0"},....}; 
    //Of course you didn't do this hardcoded. You may do this using loop

然后做这样的事情:

BufferedReader fr;
String usrid="";
int frequency=0;

for(int i=1;i<8;i++){
    try{
        fr = new BufferedReader(new FileReader("filepath/weekday"+i+".log"));

        String dataRow = fr.readLine();     
        while (dataRow != null){
            usrid = ..... ;//retrieve the userId from the dataRow
            for(int j=0;j<user.length; j++){
                frequency=Integer.parseInt(user[j][1]);
                if(usrid.equalsIgnoreCase(user[j][0])){
                    user[j][1]=String.valueOf(frequency+1);
                }
            }
            dataRow = fr.readLine(); 
        } 
    }
    catch(Exception e){}
}

最后,打印一周登录两次的用户:

for(int k=0;k<user.length;k++){
    if(user[k][1].equals("2")){
    System.out.println(user[k][0]);
}

关于java - 查找一周登录两次的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21010881/

相关文章:

java - "Cannot find symbol"调用父类(super class)构造函数时出现错误消息

java - 使用 Java 将 JSON 文档数组插入 MongoDB 时出错

c++ - 使用数组实现四叉树

c++ - C++ 中的 set<pair> 和 map 有什么区别?

在单独的函数中创建指向数组的结构指针

java - 将整数传递给其他 Activity 会导致奇怪的行为

java - 我的登录身份验证 Servlet 遇到问题

algorithm - 主方法 - 分析

c# - 有没有一种好的方法来优化迭代次数相乘的嵌套 for 循环?

c++ - 寻找类似 C++ STL 的 vector 类但使用堆栈存储