我发现这个问题很有趣。我正在使用一个具有相同键、值、计数的 awk 二维数组。并且正在打印到文件中。该文件采用以下格式
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 hash map 已经用在代码中,它与创建的 ben 对象下标和 key 之间的映射关系作为第二个字段 "For instance it is "
这个 bean 类将具有用于文件的第二个和第三个字段的 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.
}
请您对此提出一些想法。谢谢