从treemap实例调用的entrySet()函数是返回TreeSet的条目,还是返回一组条目。是否确保顺序?
而不是以一组条目的形式获取,如何才能获得有序的条目列表?
发布于 2010-08-26 15:48:52
反之亦然: TreeSet在内部使用TreeMap。(参见TreeSet docs的第一句话)
我在网上能找到的Sun java源代码不多,但这里有一些老版本:
如您所见,TreeMap定义了一个名为TreeMap.EntrySet的内部类,它只是扩展了AbstractSet。而且,它没有实现SortedSet (否则可能会在SortedMap.entrySet()契约中指定)。
但要回答实际问题:是的,订单是按照SortedMap.entrySet()合同中规定的那样得到保证的。
更新:针对Java8更新了JavaDoc链接,源代码仍然是Java6
发布于 2010-08-26 15:00:26
从JavaDoc
public Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射的集合视图。集合的迭代器按键升序返回项目。
发布于 2010-08-26 15:55:20
Assert.assertFalse(new TreeMap().keySet() instanceof SortedSet );
Assert.assertFalse(new TreeMap().keySet() instanceof TreeSet ); //no need to assert但是集合实际上是有顺序的。
https://stackoverflow.com/questions/3572702
复制相似问题