首页 > 其他分享 >文件数据读取,并按时间取最新结果

文件数据读取,并按时间取最新结果

时间:2022-09-19 22:13:33浏览次数:57  
标签:文件 读取 get item 最新 user time new data

背景:

今天项目遇到一类场景,跟大家分享下解题过程:已知文件中一组数据如下:

id user address time
1 张三 福建省漳州市龙海区 2018-05-05
2 张三 福建省福州市闽侯县 2018-05-06
3 李四 浙江省温州市苍南县 2018-05-07
4 王五 上海市松江区 2018-05-03

 要求以user字段分组,并按time倒序,求出每人最新的结果。

分析思路:

1.文件读取

  private static List<Map<String, String>> readDataFromFile(File file) {
        List<Map<String, String>> result = new ArrayList<>();
        String[] titles = new String[]{"id", "user", "address", "time"};
        try (BufferedReader br = new BufferedReader(new InputStreamReader(new FileInputStream(file), StandardCharsets.UTF_8))) {
            boolean firstLine = true;
            String data;
            while (null != (data = br.readLine())) {
                if (firstLine) {
                    firstLine = false;
                    continue;
                }

                String[] split = data.split("\\t");
                Map<String, String> map = new HashMap<>();
                for (int i = 0; i < split.length; i++) {
                    map.put(titles[i], split[i]);
                }
                result.add(map);
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

 2.数据排序:

  private static void orderData(List<Map<String, String>> params) {
        Map<String, Map<String, String>> data = new HashMap<>();
        for (Map<String, String> item : params) {
            if (data.get("user") == null) {
                data.put(item.get("user"), item);
            } elseif (convertTime(data.get("user").get("time")) < convertTime(item.get("time"))) {
                data.put(item.get("user"), item);
            }
        }
    }

    private static long convertTime(String time) {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
        long result = 0L;
        try {
            Date date = sdf.parse(time);
            result = date.getTime();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

 

标签:文件,读取,get,item,最新,user,time,new,data
From: https://www.cnblogs.com/dork-h/p/16709263.html

相关文章

  • 为什么文件系统要格式化
    磁盘为什么要格式化? 我们知道,硬盘和软盘都必须格式化后才能使用,这是因为各种操作系统都必须按照一定的方式来管理磁盘,而只有格式化才能使磁盘的结构能被操作系统认识。......
  • OSS实现文件上传功能
    心有千斤坠,却无一字言使用对象存储,将文件上传到阿里云分布式文件服务器上。帮助文档:整合spring-cloud:https://github.com/alibaba/aliyun-spring-boot/blob/maste......
  • Windows中使用SMB共享文件夹
    SMB共享文件夹简单步骤:打开【控制面板】打开【启动或关闭windows功能】打开【SMB1.0/CIFS文件共享支持】重启电脑到磁盘中选择需要共享的文件夹选中文件夹【属性......
  • Python查看文件各个时间
    importos,timefilePath='test.txt'#获取文件创建时间戳print(os.path.getctime(filePath))#获取文件的修改时间戳print(os.path.getmtime(filePath))#获取文......
  • eplan数据导出为EXCEL和PDF文件
    1.在桌面创建两个Excel表格,一个命名为模拟文件,一个命名为目标文件,首先打开模拟文件,在模拟文件中把部件采购申请表的参数输入,表头输入#H#,下面标签输入###  2.上面的模......
  • python格式化输出输出数据到json文件
    input_python={'n_layer':n_layer,'L':L,'Emm':Emm,'mu':mu,'h':h,'P':P,'Q':......
  • Git忽略已经提交过一次文件Git忽略文件
    1、从未提交过的文件可以用.gitignore   也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件该文件只能作用于未跟踪的文件(UntrackedFiles),......
  • Idea 快速跳转编译后的.class类文件
    有时候找一个编译后的类文件层级太深、寻找起来太麻烦、这时候就想能直接点击源文件就可以跳转至.class文件经过痛苦的摸索!终于成功了!!!!1.第一步配置externalTools请......
  • centos7安装nginx详细步骤 useradd abc 新建用户 在 homg下出现abc文件夹
    centos7安装nginx详细步骤一、下载nginx安装包和所需依赖groupadd-g1002nginx#创建nginx用户useradd-g1002-u1002......
  • vue中上传excel文件的方法
    1.使用方法 <inputtype="file"@change="importExcel">或者使用element-ui<el-uploadref="input"action="/":show-file-list="false":auto-upload="false":on......