繁体   English   中英

从(日志)文件读取,在Java中提取值并对它们执行操作

[英]Reading from a (log) file, extracting values and performing operations on them in Java

假设有一个名为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. 对于每个区域,找到消耗的总带宽

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

您是否建议将值存储到Hashmap,Array或List中?

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

谢谢。

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

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

您是否建议将值存储到Hashmap,Array或List中?

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

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

加起来:-)

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

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

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

您是否建议将值存储到Hashmap,Array或List中?

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

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

当您阅读日志文件时,始终保持运行总计是很好的。 它将适应不断增长的文件......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM