关于用key或者value比较的问题
来源:7-7 基于二分搜索树的映射实现
凌子祺
2020-02-27
老师我想问下,为什么我们实现的map用key去做排序比较。
比如我有一个数据{
“小红”:84,
“小明”:85,
“小华”:90
}
用value排序不是更好吗,按照数字大小,也更好找到最高最低(适合树的结构)。 还是说,用value储存容易出现重复,我们不是多重映射,就会丢失,比如小红小明都是85分,只能储存最后set的小明为85分对吗。 所以这样的map适用于储存元素出现次数,频率这样的数据。
当其他需求的话,我们最好使用多重映射,或者其他类型的数据结构。 我这样理解对吗?
写回答
1回答
-
liuyubobobo
2020-02-27
所谓的 map,是映射。什么是映射?从键到值。用户需要快速找到键,然后通过键,得到对应的值。
字典就是最简单的例子,我们要查询某个词,然后去看这个词的释义。词是键,释义是值。用户需要能够快速找到键,所以要按照键排序。
在你举的例子中,名字是键,分数是值,这个映射的意义是,让用户能够通过同学的名字,快速找到某个同学的分数。
当然,如果你希望定义一个映射,快速找到得某个分数的同学是谁,完全可以定义这样一个映射:分数是键,名字是值。什么是键,什么是值,是我们程序员定义的。
{
84:“小红”,85:“小明” ,
90:“小华”
}不过,这么做在业务逻辑上可能有问题,那就是可能有多个人得同样的分数。对此,只需要让值是一个数组或者集合就好了。
{
84:[“小红”,”小白“],85:[“小明”,”小亮“] ,
90:[“小华”]
}继续加油!:)
00
相似问题