关于用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:[“小华”]
}


继续加油!:)

0
0

玩转数据结构

动态数组/栈/队列/链表/BST/堆/线段树/Trie/并查集/AVL/红黑树…

6221 学习 · 1704 问题

查看课程