TreeMap的entrySet()是否返回TreeSet

Emi*_*mil 9 java collections treemap

从treemap实例调用的entrySet()函数是返回条目的TreeSet还是仅返回一组条目.是否确保了顺序?

而不是将它作为一组条目得到它如何才能获得一个条目列表?

Sea*_*oyd 8

反过来说:TreeSet在内部使用TreeMap.(参见TreeSet文档的第一句)

我可以在网上找到没有太多的Sun java源代码链接到,但这里有一些旧版本:

如您所见,TreeMap定义了一个名为TreeMap.EntrySet的内部类,它只扩展了AbstractSet.不,它没有实现SortedSet(否则可能由SortedMap.entrySet()契约指定).

但要回答实际问题:是的,订单是按照SortedMap.entrySet()合同中的规定确保的.


更新:针对Java 8更新的JavaDoc链接,源代码仍为Java 6


Tho*_*zer 6

来自JavaDoc:

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

返回此映射中包含的映射的Set视图.set的迭代器以升序键顺序返回条目.

  • 是的,它绝对是一个有序的集合,但不一定是`java.util.SortedSet`甚至是TreeSet. (3认同)