2011-06-12 81 views
0

我有一个包含5个元素的散列图。我想根据(元素id)用户输入显示元素的映射值和键值。例如,如果用户输入2,我想在哈希映射中的#2处显示地图值和元素的关键字。如何根据元素编号访问哈希映射中的元素?

我该如何去做这件事?

感谢, 普利文

回答

0

这是一个没有回答的问题;不管语言或平台(你忽略了哪一点),根据定义,散列图是一个无序的容器。有没有元素#2。哈希映射中的元素不以任何定义的顺序保存。

+0

hm ...我正在使用C++,并且我在某处读取容器中的元素根据键值从低到高排序。 – Praveen 2011-06-12 02:42:43

+0

基于*键值的某些函数,元素可以保存在一个数组中,是的。例如,它可能是键值mod 31(假设键是一个int),在这种情况下,键5和37的元素将*都放在第六个插槽中。由于这个原因,没有对“第六元素”的有意义的定义。 – 2011-06-12 02:49:15

+0

现在,如果关键是一个'int',并且你真正需要的是其关键是那个特定的'int'的元素,那么这是一个完全不同的故事 - 这正是地图做的。你给它一个int和一个对象,然后给定相同的int,你会得到同样的对象。 – 2011-06-12 02:50:24

0

地图一般是无序的容器。但是,如果您使用Java,那么您可以利用LinkedHashMap类,该类提供了其元素的一致排序。

这个类仍然只给你顺序访问,而不是随机访问,所以找到第n个元素将是O(n)。如果你真的想要随机访问,那么你应该考虑使用List而不是Map

+0

我想在C++中做到这一点。那有什么可能吗? – Praveen 2011-06-12 02:46:45

+0

@Praveen:不是我所知道的。 – 2011-06-12 02:50:18