私はJavaを勉強しput
ていますが、Javaハッシュテーブルにデータを追加するために使用するのに問題があります。
私はこのコードを持っています
double finalIDF = 0.0;
double finalIDF = 0.0;
double finalBM = 0.0;
ArrayList<Double> finalTMlist = new ArrayList<Double>();
Hashtable<String, ArrayList<Double>> BM25TFIDF = new Hashtable<String, ArrayList<Double>>();
String[] bm25QueryList // this is the array to store strings like {hey , good , by}
for(int finalindex = 0; finalindex < bm25QueryList.length ; finalindex++)
{
actualTFvalueforEachDoc.clear();
finalTMlist.clear();
finalIDF = 0.0;
finalIDF = htBM25IDF.get(bm25QueryList[finalindex]);
finalTMlist = tfForAlldoc.get(bm25QueryList[finalindex]);
for(int innerfinal = 0 ; innerfinal < finalTMlist.size() ; innerfinal++ ){
finalTM =finalTMlist.get(innerfinal);
finalBM = finalIDF * finalTM;
actualTFvalueforEachDoc.add(finalBM);
finalTM = 0.0;
finalBM = 0.0; }
BM25TFIDF.put(bm25QueryList[finalindex], actualTFvalueforEachDoc);
System.out.println("Right before final step after BM25TFIDF " + BM25TFIDF); }
ArrayList<Double>
キーを使用してをハッシュテーブルに入れたいと思いString
ます。
ループを初めて通過したときにキーを取得しました"orange"
Right before final step after BM25TFIDF {orange=[1.1698113207547172, 1.0508474576271187, 0.8682367918523235, 1.6330439988027539, 0.8938401048492793, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 1.0133729569093612, 0.0]}
大丈夫です
"bye"
ただし、2番目の文字列キーを使用して2番目の配列リストを挿入すると、次のようになります。
BM25TFIDF後の最終ステップの直前{orange=[0.0、0.0、0.0、0.0、0.0、0.0、0.0、4.238037326690413、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0] 、bye = [0.0、0.0、0.0、0.0、0.0、0.0、0.0、4.238037326690413、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0、0.0]}
最初の配列リストを上書きしています。文字列配列を使用して毎回キーを変更したので、発生しないはずです。
それが書き続けている理由はよくわかりません。
誰かが理由を知っていますか?