从(日志)文件中读取,在Java

时间:2017-04-27 15:20:31

标签: java algorithm parsing extract filereader

假设有一个名为logfile.log的日志文件。它也可以是txt或csv格式。其内容如下所示(带宽以KB为单位):

CustomerID: 1001  bandwidth: 5000  CarrierType: A  Region: US
CustomerID: 2001  bandwidth: 4000  CarrierType: B  Region: UK
CustomerID: 1001  bandwidth: 2000  CarrierType: A  Region: US
CustomerID: 3001  bandwidth: 1000  CarrierType: C  Region: JPN
CustomerID: 2001  bandwidth: 500   CarrierType: B  Region: UK

我想做以下事情:

  1. 查找与每个客户ID相关联的总带宽

  2. 每种运营商类型的成本为:每KB 0.40美元,carrieype B:每KB 0.60美元,carrieype C:每KB 0.80 按降序列出总金额最大的客户ID

  3. 对于每个地区,找到消耗的总带宽

  4. 我想知道我是否可以使用字符串标记器将各种值拆分并存储到变量中,或者是否应该使用Regex?

    您是否建议将值存储到Hashmap,数组或列表中?

    我还想知道如何找到我问题中提到的条件的总值。

    谢谢。

2 个答案:

答案 0 :(得分:0)

  

我想知道我是否可以使用字符串标记器将各种值拆分并存储到变量中,或者是否应该使用Regex?

任何一种方法都可行。我建议你尝试一下看起来最简单的方法。

  

您是否建议将值存储到Hashmap,数组或列表中?

听起来您需要(至少)HashMap将客户ID映射到代表客户使用情况的对象。

  

我还想知道如何找到我问题中提到的条件的总值。

添加它们: - )

在您阅读日志文件时保持运行总计,或者在内存数据结构中进行一次或多次传递。

答案 1 :(得分:0)

  

我想知道我是否可以使用字符串标记器进行拆分   将各种值存储到变量中或者是否应该使用正则表达式?

我猜 - 正则表达式很有效。

  

您是否建议将值存储到Hashmap,数组或列表中?

HashMaps of customer-id,carrierType,regions。很容易[O(1)]进行任何更新。

  

我还想知道如何找到总值   我的问题中提到的条件。

当您阅读日志文件时,始终保持运行总计是件好事。它将在不断增长的文件中很好地扩展......