从树形图实例调用的 entrySet() 函数是否返回条目的 TreeSet 或仅返回一组条目。是否确保顺序?
不是将其作为一组条目获取,而是如何按顺序获取条目列表?
从树形图实例调用的 entrySet() 函数是否返回条目的 TreeSet 或仅返回一组条目。是否确保顺序?
不是将其作为一组条目获取,而是如何按顺序获取条目列表?
反之亦然:TreeSet 在内部使用 TreeMap。(参见TreeSet 文档的第一句话)
我在网上找不到太多可链接的 Sun java 源代码,但这里有一些旧版本:
如您所见,TreeMap 定义了一个名为TreeMap.EntrySet的内部类,它只是扩展了 AbstractSet。不,它没有实现SortedSet(否则可能由SortedMap.entrySet()合约指定)。
但要回答实际问题:是的,按照SortedMap.entrySet()合同中的规定确保顺序。
更新:为 Java 8 更新了 JavaDoc 链接,源代码仍然是 Java 6
从JavaDoc:
public Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射的 Set 视图。集合的迭代器以升序键顺序返回条目。
Assert.assertFalse(new TreeMap().keySet() instanceof SortedSet );
Assert.assertFalse(new TreeMap().keySet() instanceof TreeSet ); //no need to assert
但是这个系列实际上是有顺序的。