0

この問題はとても興味深いと思いました。キー、値、カウントが同じ awk 2D 配列を使用しています。それがファイルに出力されています。このファイルは以下の形式です

A100|B100|3
A100|C100|2
A100|B100|5

今、私はこのようなファイルを持っています..私の動機は、このファイルをハッシュマップに変換して、ハッシュマップからの最終出力が.

A100|B100|8
A100|C100|2

ただの集計

課題は、これには 2 次元ではなく 3 次元があることです。以下の形式の別のファイルがありました。

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>();

作成した ben オブジェクトの添え字とキーを 2 番目のフィールドとしてマッピング関係にあるコードで使用されている secongField ハッシュ マップ "たとえば、"

この 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.
 }

これに関していくつかのアイデアを投げてください。ありがとうございました

4

1 に答える 1