私は、レコメンダー システム用の WeightedSlopeOne 予測アルゴリズムを実装しています。コードのある時点で、2 つの 2D マップが必要ですMap<Integer, Map<Integer, Integer>>
。Map<Integer, Map<Integer, Double>>
これらにアクセスして値を割り当てるのは面倒な手順です。
//The following 20 lines are 1 line in Python. Sigh...
HashMap<Integer, Integer> freqsForItem1 = frequencies.get(curItemID);
//See if we have a value for curItemID
if (freqsForItem1 == null) {
freqsForItem1 = new HashMap<Integer, Integer>();
freqsForItem1.put(curItemID_2, 1);
frequencies.put(curItemID, freqsForItem1);
}
else {//See if we have a value for curItemID+curItemID_2
Integer freqForItem1Item2 = freqsForItem1.get(curItemID_2);
if (freqForItem1Item2 == null) {
//If we don't have a value for item1+item2 we just put 1
freqsForItem1.put(curItemID_2, 1);
}
else {//We already have a value for curItemID+curItemID_2
//So we just increment it
freqsForItem1.put(curItemID_2, freqForItem1Item2 + 1);
}
}
では、ここで の代わりに何を使用する必要がMap<K1, Map<K2, V>>
ありますか、またはより良いデータ構造が利用できない場合、そのような Map の値にアクセスして変更するより良い方法は何ですか?