嗨,大家好!南通科迅教育课堂又开始啦!今天小迅姐姐为大家推荐的干货是《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软件开发的你,每一位对自己以后职业有规划的人!推背图 详解
网友评论 ()条 查看