この問題はとても興味深いと思いました。キー、値、カウントが同じ 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.
}
これに関していくつかのアイデアを投げてください。ありがとうございました