我會感激任何意見。我有這個代碼:投入TreeMap - 奇怪的行爲
TreeMap<Date, Double> predictPoints = new TreeMap<Date, Double>();
while(iterator_time.hasNext()) {
Date time = iterator_time.next();
if (count < obs.toList().size()) {
count++;tmp1++;
continue;
} else {
for (int j = 0; j <= degreePolynom; j++) {
predictConsumption += coeff[j] * Math.pow(time.getTime(), j);
}
predictPoints.put(time, predictConsumption);
predictConsumption = 0.0;
count++;tmp2++;
}
}
我遍歷Vector
,在這個向量中是35036數字。 tmp1
和tmp2
變量僅供檢查。 80%的數據被跳過(如果block,obs.toList()。size()是35036)和我使用的其餘數據(20%)。問題:我在else
塊中迭代了7007次,但在predictPoints
中只有7003個項目。如果我使用較少的數據,則不會發生此問題。如果我使用TreeMap
而沒有Date
,例如TreeMap<Integer, Double>
那麼我在地圖上有7007項,它是正確的。每個數字都是獨一無二的 - 我測試過它。 4件丟失物品在哪裏? :-(
感謝您的任何意見。
無關的,但爲什麼(哦,爲什麼)您使用'VECTOR'?它實際上已被棄用自從Java 1.2早在1998年。他們甚至建議在javadoc中使用'ArrayList'到['Vector'](https://docs.oracle.com/javase/7/docs/api/java/util/Vector.html)。 – Andreas
@DmitryP。 'containsKey'只有一個參數,而且由於map的值('predictConsumption')永遠不爲null,所以簡單地檢查'put'的返回值比使用'containsKey'的額外調用要快。 – Andreas