9

从树形图实例调用的 entrySet() 函数是否返回条目的 TreeSet 或仅返回一组条目。是否确保顺序?

不是将其作为一组条目获取,而是如何按顺序获取条目列表?

4

3 回答 3

9

反之亦然:TreeSet 在内部使用 TreeMap。(参见TreeSet 文档的第一句话)

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

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

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


更新:为 Java 8 更新了 JavaDoc 链接,源代码仍然是 Java 6

于 2010-08-26T07:48:52.423 回答
6

JavaDoc

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

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

于 2010-08-26T07:00:26.333 回答
0
Assert.assertFalse(new TreeMap().keySet() instanceof SortedSet );
Assert.assertFalse(new TreeMap().keySet() instanceof TreeSet ); //no need to assert

但是这个系列实际上是有顺序的。

于 2010-08-26T07:55:20.107 回答