15-映射

作者: ducktobey | 来源:发表于2019-10-27 11:00 被阅读0次
  • 映射(Map)

Map 在有些变成语言中也叫做字典(dictionary,比如Python,Objective-C,Swift等)

其中Map的结构类似于如下的对应关系

要求:Map的每一个key是唯一的

说到这里,我们就自己来设计一个Map吧!

Map提供的接口
int size();
boolean isEmpty();
void clear();
V put(K key, V value);
V get(K key);
V remove(K key);
boolean containsKey(K key);
boolean containsValue(V value);
void traversal(Visitor<K,V> visitor);

类似Set,Map可以利用前面了解到的链表,二叉搜索树(AVL树,红黑树)等数据结构来实现。

由于在上一章节中,我们使用到了链表来实现Set,其性能非常差,因此在本章节中,直接使用红黑树来进行实现。

最终实现源码请查阅demo源码<TreeMap>

完成之后,我们也对其做了单词的统计,统计在一堆文件中,某个单词出现的次数。统计的方法也在demo源码中。

  • Map与Set的比较

前面我们已经知道了,下图是一个Map

当我们去掉Map的value,只留下Key之后

我们发现,它就是一个Set,因为在Map中,它的key一定是唯一的。

所以:Map的所有key组合在一起,其实就是一个Set,因此Set可以间接利用Map来做内部实现

因此其内部实现可以参阅demo文件中的<TreeSet>

GitHub地址

本节完!

相关文章

  • 15-映射

    映射(Map) Map 在有些变成语言中也叫做字典(dictionary,比如Python,Objective-C...

  • 商君书-16-刑约(亡)

    商君书-15-刑约(亡)

  • 敏捷漫画#15-敏捷转型计划

    #15-敏捷转型计划(The Agile Transformation Plan) 作者评论: 对于敏捷转型(听起...

  • 无标题文章

    //应用程序启动完毕即会调用15- (BOOL)application:(UIApplication *)appl...

  • 李善友课程笔记15-颠覆式创新是非连续性的方法论

    李善友课程笔记15-颠覆式创新是非连续性的方法论

  • nginx 映射路径

    映射盘符 映射路径 访问/evaluate 会被映射到 localhost:8080/evaluate 映射路径 ...

  • 开发指南

    显示界面层设计模式 对象-对象映射 简单属性映射 复杂类型映射 双向映射 隐式和显示映射 递归和集合映射 依赖注入...

  • 映射、函数

    1、映射 映射将键映射到值。映射的零值为nil。nil映射既没有键,也不能添加键。make函数会返回给定类型的映射...

  • spring-mvc-2-常用注解

    使用@RequestMapping 注解映射请求 映射类 映射方法Paste_Image.png 映射请求参数,请...

  • 08 | 映射

    映射是无序集合,无序的原因是映射的实现使用来散列表 声明 空映射与nil映射 映射是引用类型在函数间传递映射并不会...

网友评论

      本文标题:15-映射

      本文链接:https://www.haomeiwen.com/subject/ynupvctx.html