首页 > 编程源码 > Java之美[从菜鸟到高手演变]之集合类【三】使用

Java之美[从菜鸟到高手演变]之集合类【三】使用

楼主:我只是个普通人… [1级] · 2019-11-13 ·  浏览786 · 编程源码 · ID:
重点方法介绍:

首先是构造方法,大多数情况下,我们采取无参的构造函数来构造哈希表,
此处先介绍三个重要的变量:loadFactor、threshold、table,loadFactor是一个加载因子,threshold是临界值,table说明哈希表的底层,其实是个数组。可以看看他们的声明方式:
transient Entry[] table;;
int threshold;
final float loadFactor;

细心的读者似乎又发现一个新问题,为什么table前面采用的是transient关键字呢,那我们得闲来研究下声明为transient关键字的含义:变量如果被声明为transient类型的话,那么在序列化的时候,忽略其的值,就是说此处的table,如果将要进行持久化的话,是不会对table的值进行处理的,直接忽略,为什么此处table会这样处理呢?因为HashMap的存储结构,其实就是一个数组+多个链表,数组里存放对象的地址,链表存放数据,所以对地址进行持久化是没有任何意义的
HashMap的初始容量为0,每增加一对值,容量曾1,这点好理解,我们通过一个小的例子,来看看HashMap的基本使用方法。

输出:
HashMap的初始值:0
HashMap是否为空:是
3
HashMap是否为空:否
niuniu 2 hashcode:-1045196352
egg 3 hashcode:100357
erqing 1 hashcode:-1294670850
true
true
1955200455
此处附一个利用HashMap来简单处理问题的例子,需求在注释中已经给出,希望读者好好看看,代码不难,但是很多的面试及面试题都用到这个思路,笔者曾经面试的时候,经常会被问题这题的思想,但是就是没有去亲自实现一下,以致在hashmap的操作上被难住了。
关于HashMap的一些其他底层的东西及与HashTable的区别和联系,我会在另一篇文章里介绍,此处暂不多说。
- 版权声明 - 1、本帖所有言论和图片等纯属网友个人意见,与流星社区立场无关;
2、其他单位或个人使用、转载或引用本帖时必须同时征得该帖子作者我只是个普通人…流星社区的同意;
3、备注原文地址:https://bbs.liuxingw.com/t/17187.html,可忽略第2条;
4、帖子作者需承担一切因本文发表而直接或间接导致的相关责任;
5、如本帖内容或部分内容转载自其它媒体,这并不代表本站赞同其观点和对其真实性负责;
6、如本帖若为资源类,将仅限用于学习和研究目的,您必须在下载后的24个小时之内,从您安装或使用的设备中彻底删除上述内容;
7、如果您喜欢该程序,请支持正版软件,购买注册,可以得到更好的正版服务;
8、如本帖侵犯到任何版权或违法问题,请立即邮件告知我们,我们将及时予以处理。
6条回复 |  最后回复于2019-11-14

Remx°_m [1级]

实在看不懂啊
发布于2019-11-13

回复列表

  • 内容加载中...

说点什么...

我只是个普通人… [1级]

看不明白就算了吧
发布于2019-11-13

回复列表

  • 内容加载中...

说点什么...

Remx°_m [1级]

不不不,我要学
发布于2019-11-14

回复列表

  • 内容加载中...

说点什么...

Remx°_m [1级]

我不懂英语啊
发布于2019-11-14

回复列表

  • 内容加载中...

说点什么...

我只是个普通人… [1级]

问题是我也教不来呀。
发布于2019-11-14

回复列表

  • 内容加载中...

说点什么...

Remx°_m [1级]

,我是要实际操作,才能慢慢懂,还是该怎么学,刚刚想学java
发布于2019-11-14

回复列表

  • 内容加载中...

说点什么...
登录注册 后才可进行评论
签到
39人签到
已签0天
  • 46637帖子
  • 1936935热点量
  • 185040火热值