何时使用地图是有意义的?

时间:2010-03-11 20:06:29

标签: language-agnostic data-structures dictionary map mapping

当我尝试使用地图(一组键值条目)时,我试图整理案例。到目前为止,我有两个类别(见下文)。假设存在更多,它们是什么?

请将每个答案限制在一个唯一的类别中并举一个例子。


属性值(like a bean

age -> 30
sex -> male
loc -> calgary   

在场,有O(1)表现

peter -> 1
john  -> 1
paul  -> 1

8 个答案:

答案 0 :(得分:5)

稀疏数据结构(例如稀疏数组或矩阵):

0 -> value
1 -> value
100 -> value
105 -> value

另外,我认为您列出的“Presence”示例最好使用Set数据结构(例如Java或.NET中的HashSet),因为地图的“映射”部分实际上不是必需的。

答案 1 :(得分:3)

记住功能结果(缓存,缓冲,memoization

10 -> 2
20 -> 7
30 -> zeroesIn(factorial(30))

答案 2 :(得分:2)

转换

peter -> pierre
john  -> jean
paul  -> paul

答案 3 :(得分:1)

如果你的语言允许关联数组和指向函数/过程的指针,你可以使用map来构建类似于面向对象的东西(参见Perl的经典例子)。

请在此处查看more detailed explanation

答案 4 :(得分:1)

将任意数量的可选参数传递给函数,使用不支持它们的语言:

cars = findAvailableCars(make -> 'Toyota', model -> 'Prius', color -> 'green')

答案 5 :(得分:0)

正如Eric Petroelje所说,你的“存在”示例更适合于Set而不是Map。

但是,如果要跟踪事物的发生次数,请使用地图。例如,您想知道给定单词在文档中出现的次数:

伪代码:

wordMap = map()
for word in document:
    if wordMap.containsKey(word):
        wordMap[word]++
    else:
        wordMap[word] = 1

然后,如果我想知道“地图”这个词出现在文档中的次数,那就是wordMap["map"]

答案 6 :(得分:0)

地图是表示graph的一种方式。键是图中的节点,特定节点N的值是N连接的所有节点的列表。

答案 7 :(得分:0)

(感谢重拍,MatrixFrog。)

字典(将术语映射到定义)

"postulate" -> "demand or claim"
"consulate" -> "residence of a foreign official"

此外属于此类

EADDRINUSE    -> "Address in use." 
EADDRNOTAVAIL -> "Address not available."