放入TreeMap - 奇怪的行为

时间:2016-02-04 20:37:17

标签: java 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数字。 tmp1tmp2变量仅供检查。跳过80%的数据(如果是块,obs.toList()。size()是35036),我使用的是其余数据(20%)。问题:我在else块中迭代7007次,但在predictPoints中只有7003项。如果我使用较少的数据不会发生此问题。如果我使用TreeMap而没有Date,例如TreeMap<Integer, Double>,那么我在地图中有7007个项目,它是正确的。每个号码都是独一无二的 - 我测试了它。 4件丢失的物品在哪里? : - (

感谢您的任何建议。

1 个答案:

答案 0 :(得分:0)

地图不支持重复键,因此如果您向地图添加7007项,但最终只有7003项,那么4项会有重复键, 替换之前的值。

检查put()的返回值,检查它是否替换了现有值。