您的位置:网站首页 > Java教程 > 正文

【科迅教育干货】南通电脑编程培训:Java集合——HashSet源码分析

类别:Java教程 日期:2019-8-5 15:29:04 人气: 来源:

  嗨,大家好!南通科迅教育课堂又开始啦!今天小迅姐姐为大家推荐的干货是《Java集合——HashSet源码分析》。知道大家等不及了,下面就请科迅教育软件开发专业资深老师来给大家详细介绍。速来学习吧!

  广义上来讲,java中的集合是指java.util包下面的容器类,包括和Collection及Map相关的所有类。

  中义上来讲,我们一般说集合特指java集合中的Collection相关的类,不包含Map相关的类。

  狭义上来讲,数学上的集合是指不包含重复元素的容器,即集合中不存在两个相同的元素,在java里面对应Set。

  最后一个构造方法有点特殊,它不是public的,意味着它只能被同一个包或者子类调用,这是LinkedHashSet专属的方法。

  Set没有get()方法哦,因为get似乎没有意义,不像List那样可以按index获取元素。

  (1)阿里手册上有说,使用java中的集合时要自己指定集合的大小,通过这篇源码的分析,你知道初始化HashMap的时候初始容量怎么传吗?

  假如,我们预估HashMap要存储n个元素,那么,它的容量就应该指定为((n/0.75f) + 1),如果这个值小于16,那就直接使用16得了。

  当使用迭代器迭代时,如果发现集合有修改,则快速失败做出响应,抛出ConcurrentModificationException异常。

  这种修改有可能是其它线程的修改,也有可能是当前线程自己的修改导致的,比如迭代的过程中直接调用remove()删除元素等。

  细心的同学可能会发现,像ArrayList、HashMap中都有一个属性叫modCount,每次对集合的修改这个值都会加1,在遍历前记录这个值到expectedModCount中,遍历中检查两者是否一致,如果出现不一致就说明有修改,则抛出ConcurrentModificationException异常。

  感谢大家的耐心阅读,希望对南通想学IT软件开发的同学们有所帮助!如果您对IT软件开发学习有浓厚的兴趣,欢迎来和我交流。南通科迅教育欢迎每一位热爱IT软件开发的你,每一位对自己以后职业有规划的人!推背图 详解

  财成国际

0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved