我知道.keySet()
返回一个无序的集合。hashmap.keyset()会按照它们添加到散列表的顺序返回键吗?
据我所知,这意味着我需要保留一个数组列表的键,以便跟踪键被添加到散列表的顺序,是正确的?
我知道.keySet()
返回一个无序的集合。hashmap.keyset()会按照它们添加到散列表的顺序返回键吗?
据我所知,这意味着我需要保留一个数组列表的键,以便跟踪键被添加到散列表的顺序,是正确的?
这意味着我需要保持一个数组列表的键,以便跟踪键添加到散列表的顺序,是否正确?
是的,没错。或者,您可以使用LinkedHashMap
这为您做。
从文档:
[...]此实现与HashMap的不同之处在于它保持于所有条目的运行双向链表。此链接列表定义了迭代排序,这通常是密钥在映射(插入顺序)中插入的顺序。 [...]
另一种可能性是TreeMap。请注意,所有这些类都是保证迭代将按顺序进行,而不是由keySet()返回的Set将具有任何特定顺序。 – 2012-03-13 19:17:36
链接的哈希映射看起来像我需要的。我如何覆盖removeEldestEntry,使其只通过插入顺序 - 而不是访问顺序? – bernie2436 2012-03-13 19:19:20
嗯。不清楚访问顺序是什么意思。最年长的条目可能是首次插入的关键。 – aioobe 2012-03-13 19:20:32
[Behavior of LinkedHashMap's keySet()and values()methods](http://stackoverflow.com/questions/9583650/behaviour-of-linkedhashmaps-keyset-and-values方法) – 2012-03-13 19:24:42
虽然这是对“* HashMap's * keySet方法的行为”的评论。 – aioobe 2012-03-13 19:57:38