qq_34436013
2016-06-07 09:22
采纳率: 28.6%
浏览 1.5k
已采纳

java 读取txt文件,一列日期(8位,如20160524),一列数值,将相同日期的数值求和并打印

图片说明

求前辈帮忙写下

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

2条回答 默认 最新

  • little_how 2016-06-07 10:01
    已采纳

    public static void countDate(String filePath) {
    Map<String, Integer> map = new HashMap<String, Integer>();
    FileInputStream in = null;
    try {
    //filepath为文件路径
    in = new FileInputStream(filePath);
    BufferedReader br = new BufferedReader(new InputStreamReader(in));
    while(true) {
    //按行读取
    String str = br.readLine();
    if (str == null) break;
    if ((str = str.trim()).length() == 0) continue;
    Integer v = map.get(str);
    v = v == null ? 1 : v.intValue() + 1;
    map.put(str, v);
    }
    Iterator<String> iterator = map.keySet().iterator();
    while(iterator.hasNext()) {
    String key = iterator.next();
    System.out.println("date="+key+",totalCount="+map.get(key));
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    if (in != null) {
    try {
    in.close();
    } catch (Exception e) {
    e.printStackTrace();
    }
    }
    }
    }

    点赞 打赏 评论
  • little_how 2016-06-07 09:36

    首先需要知道文件有多大,确认虚拟机内存能否一次性读入。
    如果能,直接运用
    BufferedReader + HashMap<String, Integer>
    最终输出就可以。

    若果文件太大,虚拟机不能一次读入,可以先hash文件,分成小文件再进行分别读取和输出。

    这里只提供了思路,但如果有帮助,希望结帖

    点赞 打赏 评论

相关推荐 更多相似问题