0

我发现这个问题很有趣。我正在使用一个具有相同键、值、计数的 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.
 }

请您对此提出一些想法。谢谢

4

1 回答 1

0

考虑使用Google Guava 库中提供的表格。

于 2012-07-26T17:32:35.193 回答