开发者

Does a TreeMap's entrySet() return a TreeSet

Does the entrySet() function that is called from a treemap instance return a TreeSet of entry's or simply a set of entry's.Is the order ensured?

Instead of getting it as 开发者_StackOverflow中文版a set of entry's how can a get a list of entry's in order?


It's the other way around: a TreeSet uses a TreeMap internally. (See first sentence of the TreeSet docs)

There's not much Sun java source code I can find on the web to link to, but here are some oldish versions:

  • TreeSet
  • TreeMap

As you can see, TreeMap defines an inner class called TreeMap.EntrySet which just extends AbstractSet. And no, it does not implement SortedSet (which would otherwise probably be specified by the SortedMap.entrySet() contract).

But to answer the actual question: yes, the order is ensured as specified in the SortedMap.entrySet() contract.


Update: JavaDoc links updated for Java 8, sources are still Java 6


From the JavaDoc:

public Set<Map.Entry<K,V>> entrySet()

Returns a Set view of the mappings contained in this map. The set's iterator returns the entries in ascending key order.


Assert.assertFalse(new TreeMap().keySet() instanceof SortedSet );
Assert.assertFalse(new TreeMap().keySet() instanceof TreeSet ); //no need to assert

But the set has order actually.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜