如何快速自己实现Map
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何快速自己实现Map相关的知识,希望对你有一定的参考价值。
参考技术A 对上述编写的接口以及内容进行说明:首先定义这个类的成员变量
V put(K k,V v)
执行过程:
第一步 判断该集合是否需要扩容;
第二步 计算位置 需要将该元素放置在哪里;
第三步 判断是否是修改(可能计算的位置已经有元素存在);
第四步 该位置可能已经形成链表(所以需要判断下一个元素)
第五步 创建 Entry 元素 并存放在 table 的 index 下标上。
int getIndex(K k,int length)
知识点 计算下标的方法一般有两种:
&(与)算法 ---- 与 得到的值一定不会大于这两个数的最小值 [0,最小值]
模算法 ---- 取模 后得到的值一定是比取模的数小 [0,取模数)
计算下标: hashCode 是根据对象的地址或者字符串的值计算得到的 int 类型的数值
特点:
V get(K k)
执行过程:
第一步:根据 getIndex(K k, int length) 查询下标 (注意此时获取的下标可能代表好多值)
第二步: 根据 index 获取 Entry
第三步: 循环判断 需要满足两个条件(1.entry 不为空 2.entry 的key等于该值) ;如果不满足则获取下一个 entry 继续判断
void clear()
boolean containsValue(V value)
执行过程:
第一步: 将类的成员变量 赋值给该方法中的成员变量
第二步: 判断该成员变量是否为空,若为空直接返回 false
第三步: 循环遍历 Entry ,再次遍历 Entry 链表中的所有元素
第四步: 需要考虑到 V 可能是 对象,所以不能简单的通过 == 来判断。
boolean containsKey(K key)
执行过程:
第一步: 根据 key 计算出 对应的 hashCode getIndex(K k,int length);
第二步: 将类的成员变量 赋值给该方法中的成员变量;
第三步: 判空,如果为 null 直接返回 false;
第四步: 不为空,根据 hashCode 获取对应的 Entry,如果 Entry 不为空 循环判断
第五步: 如果 entry.getKey() 不为空 且 两者的 equals 比较相同 则返回 true;
否则 获取 entry.getNext(),继续判断;如果都不满足 则直接 判断 entry == key。(考虑到对象的存在)
boolean isEmpty()
int size()
void resize()
最重要的是扩容方法
执行过程:
第一步:判断当前的 size 是否大于 当前的默认的长度 * 默认因子
第二步:如果不大于,则什么都不用做
第三步:如果大于,就需要扩容:
a. 定义一个新的 table 用于临时存储 扩容的 Entry 对象
b. 定义一个临时变量 entry 用于存储每一个下标的 Entry 对象
c. 准备遍历 old 的 table [0,table.length)
d. 取出 table[i] 赋值给 b 步骤定义的 entry(这是一个链表)
e.while 循环 判断 entry 是否为空
以下步骤是操作链表(精华):
具有的成员变量:
K k;V value
MyMap.Entry next;(指针,指向下一个 Entry)。
通过 setNext()方法实现。
怎样快速实现英文文章翻译
很多小伙伴为了提高自己的英语水平,经常会去阅读一些英文文章,来锻炼自己,但是有时候因为自己的英语水平不够,又无法完全读懂这些英文文章的,那么这时我们应该如何快速实现英文文章的翻译呢?下面我们就一起来看一下吧。
操作步骤如下:
步骤一:我们需要先将因为文章电子档在电脑上准备好,因为今天的方法分享是需要通过电脑来进行操作的。
步骤二:文章准备好后,还需要我们借助电脑浏览器搜索一点翻译,一个在线翻译网站,借助它来实现英文文章的翻译。
步骤三:通过搜索进入翻译页面后,我们可以先在页面的右上角对进行登录,这样会方便我们后面的使用。
步骤四:登录好后,我们就可以通过页面中心的立即翻译按钮,进入到具体的文档翻译页面中去了。
步骤五:具体的文档翻译页面进来后,我们就可以通过上传文档按钮,将需要进行翻译的英文文章添加进来了。
步骤六:文章添加进来后,不要立即开始进行翻译,在文章的下方我们还需要将目标语言的选项修改为,你所需要的语言。
步骤七:选项修改好后,我们就可以通过开始翻译按钮,开始对文章进行翻译了。
步骤八:文章翻译所需要的时间是由翻译内容的多少决定的,我们只需要耐心等待文章翻译结束,就可以通过预览按钮,对翻译结果进行在线预览了。
快速实现英文文章翻译的方法分享到这里就结束了,希望可以对大家有所帮助啊。
以上是关于如何快速自己实现Map的主要内容,如果未能解决你的问题,请参考以下文章