2013-02-04 213 views
2

我有一个SortedMap(特别是一个TreeMap),我从中提取这些值。之后,我需要获取第一个和最后一个值,因为它们是在SortedMap中订购的。可能从SortedMap获取有序集合?

SortedMap.values()返回Collection,其Iterator保留顺序。因此,获得第一个值就像collection.iterator().next()一样简单。然而,获取最后一个值并不那么简单 - 迭代一直到最后一个值是非常低效的。

有没有办法解决?现在,我一路迭代并存储该值,所以我只需要做一次...

+0

'sortedMap.get(sortedMap.lastKey())'''如何? – toniedzwiedz

回答

4

如果您使用的是Java 6或更高版本,则可以使用NavigableMap而不是SortedMap ,并使用其lastEntry方法。

否则,您可以使用SortedMap.get(SortedMap.lastKey())

+0

这很有帮助。但是,我想知道是否有方法访问第一个和最后一个值而不访问底层映射?我不再有权访问需要访问值的地图。如果SortedMap.values()返回一个List,例如... – ericsoco

+0

不会,那么在这种情况下,你就无能为力。 –