私が選んだデータ構造設計は、実行するのが非常に厄介であることがわかっているので、それを実行する方法について専門家の意見を求めるのではなく、私がやろうとしていることに対してより自然なデータ構造を提案してくれることを願っています.以下のとおりであります。私はデータの行を読んでいます。各列は単一の変数です (動物、色、作物など - 45 個あります)。データの各行には、その列の変数の値があります。値や行数は事前にはわかりません。
Animal Color Crop ...
-------------------------------------
cat red oat
cat blue hay
dog blue oat
bat blue corn
cat red corn
dog gray corn
... ... ...
読み終わったら、次のように、各変数、変数が取った各値、およびその変数がその値を取った回数をキャプチャする必要があります。
Animal [cat, 3][dog,2][bat, 1]...
Color [blue, 3][red,2][gray,1]...
Crop [corn,3][oat, 2][hay,1]...
...
私はいくつかのアプローチを試しましたが、私が得た最も近いものは、ハッシュマップのGUAVAマルチマップを使用することです:
Map<String, Integer> eqCnts = new HashMap<String, Integer>();
Multimap<String, Map> ed3Dcnt = HashMultimap.create();
for (int i = 0; i + 1 < header.length; i++) {
System.out.format("Got a variable of %s\n", tmpStrKey = header[i]);
ed3Dcnt.put(tmpStrKey, new HashMap<String, Integer>());
}
必要なものを正確に作成したようですが、作業が非常に厄介で退屈であり、不思議な方法で動作します (たとえば、「ed3Dcnt.put()」が HashMap を挿入したにもかかわらず、対応する ".get()" は HashMap を返すのではなく、まったく新しい一連の問題を作成するコレクションを返します)。私はそれを十分に簡単に行うことができます。
よろしければ、データ構造設計のより良い選択についての提案はありますか? 明らかに優れた設計上の選択肢がない場合、.get() が返す Collection をどのように使用すればよいでしょうか? そのスロットに入れる単一の HashMap だけが必要な場合は?
どうもありがとう - エド