我发现这个问题很有趣。我正在使用一个具有键,值,计数相同的awk 2D数组。那是打印到文件。此文件采用以下格式
A100|B100|3
A100|C100|2
A100|B100|5
现在我有一个这样的文件..我的动机是将此文件转换为哈希映射,以便哈希映射的最终输出为。
A100|B100|8
A100|C100|2
只是汇总
挑战在于,这个有3个维度,而不是2个维度。我确实有一个以下格式的另一个文件
D100|4
H100|5
D100|6
我很容易聚合上面的内容,因为它只是2D而我使用下面的代码来做那个
String[] fields= strLine.trim().split("\\|");
if(hashmap.containsKey(fields[0]))
{
//Update the value of the key here
hashmap.put(fields[0],hashmap.get(fields[0]) + Integer.parseInt(fields[1]));
}
else
{
//Inserting the key to the map
hashmap.put(fields[0],Integer.parseInt(fields[1]));
}
所以这很容易实现。
但是当涉及到3D时,我必须在里面进行另一次检查。我的想法是维持一个[B100,5(beanObject [5])]
Map<String,beanClassObject> hashmap=new Map<String,beanClassObject>();
secongField哈希映射,它已在代码中使用,该代码在创建的ben对象下标和键之间具有映射关系,作为第二个字段“例如它是”
此bean类将具有文件的第2和第3个字段的getter和setter方法。我希望我明白这一点。所以这个的实现将是
if(hashmap.containsKey(fields[0]))
{
**//Have to check whether the the particular key value pair already exists ... I dint find any method for this ... Just a normal iteration is there .. Could you ppl guide me regarding this**
//Update the value of the key here
secondFieldHashMap.get(fields[1]).COunt= secondFieldHashMap.get(fields[1]).getCOunt+ Integer.parseInt(fields[2]));
}
else
{
//Inserting the key to the map
hashmap.put(fields[0],Integer.parseInt(fields[1]));
secondFieldHashMap.get(fields[1]).COunt= Integer.parseInt(fields[2]));
}
else
{
// This meands there is no key field
// Hence insert the key field and also update the count of seconfFieldHashMap as done previously.
}
请告诉你,请提出一些有关此事的想法。谢谢