Map的size()方法返回什么?

Bhe*_*ung 9 java size map

我有一张声明如下的地图 -

Map<Date, Long[]> myMap = new TreeMap<Date, Long[]>();
Run Code Online (Sandbox Code Playgroud)

我在该地图中放置了一些键值对,检查大小如下 -

myMap.size(); //returns 29

myMap.values().size(); //returns 31
Run Code Online (Sandbox Code Playgroud)

所有日期(键)都是不同的.

这两个人不应该返回相同的值吗?

Rya*_*art 12

鉴于TreeMap的values()方法返回的集合(至少在JDK 6中)具有如下大小:

public int size() {
    return TreeMap.this.size();
}
Run Code Online (Sandbox Code Playgroud)

我说你在两次size()通话之间添加了新的条目.要明确,map.values().size()代表团map.size().因此,他们无法为具有相同内容的相同地图返回两个不同的值.

  • +1 我想到了同样的事情,但假设海报已经排除了这一点。另一个线程可能正在处理哈希表。 (2认同)
  • @seand:我认为这是另一个线程,我几乎写了那个,但概括为“某事”,因为你永远不知道...... (2认同)