【发布时间】:2014-12-15 16:38:47
【问题描述】:
我有一个 * 分隔的文件,其中包含按天计算的日志文件。
我需要使用这些数据创建一个“总体计数”文件,但我无法完全弄清楚。
我的文件布局如下:
01/11/2014*0123*0*3*0*1
01/11/2014*4567*1*1*2*4
02/11/2014*0123*1*2*1*0
02/11/2014*4567*5*3*2*1
这只是一个示例。但是,逻辑将是相同的......我需要将这些值相加并获得如下输出:
0123*1*5*1*1
4567*6*4*4*5
我目前正在使用 BufferedReader 逐行遍历文件:
while((strLine = br.readLine()) != null) ...
在包含每日数据的文件中,我感兴趣的代码 (0123, 4567) 始终位于相同的位置,因此我可以将它们作为子字符串:
String code = strLine.subString(11, 15);
或在 *: 上拆分行
String[] line = strLine.split("\\*");
String code = line[1];
但这就是我卡住的地方...我需要通过文件查找“代码”并将其添加到计数中,实现此目的的最佳方法是什么?我尝试使用 2D 数组,但无法完全理解它。
【问题讨论】:
-
您只是想将第一个 * 之后的所有值相加,例如 0123、4567,还是想以某种方式保存它们以供以后处理?
-
0123、4567 是在整个文件中将被视为“键”的代码。
-
一把钥匙干什么用的?你能具体说明你的问题吗? “我需要将值相加”是什么意思?
-
澄清一下,您是否计算了这两个特定代码的每个唯一实例?
-
使用
Map,其中键是String“0123”或“4567”等。值是大小为4的一维int数组。当您阅读时该文件,如果您的键已经在地图中,则将每个值添加到数组中。如果您的密钥不存在,请创建一个新密钥并初始化一个新值。
标签: java file multidimensional-array