菜鸟谈论集合

集合和数组一样,都是容器。
由于数组长度不可变,在进行使用时候需要时刻注意数组是否已经存满,使用很不爽。
当然,数组也有它自己的优点,比如可以根据索引快速定位到所需要元素的位置。查找效率高。
集合采用不同的数据结构作为存储元素的模型(比如线性表,树),对于采用相同的数据结构,但是在存储器上的物理实现方式不同也会产生不同的容器实现类(比如ArrayList和LinkList都属于线性结构,但前者属于顺序存储,后者属于链式存储)。
集合是泛型类,而泛型不支持基本数据类型,所以集合不能存储基本数据类型。(可以将基本类型转换为包装类进行存储)。
创建某种集合类的对象时,在内存中建立对应的数据结构的容器,向容器里面插入元素时,某些数据结构模型对插入的元素有位置要求,这里用TreeSet来举例,底层使用平衡二叉树作为存储模型,(利用红黑树的方式构建平衡二叉树),Java官方秃头们已经对红黑树这种插入规则进行了代码实现,但是在真正插入的时候需要进行元素比较,但是秃头们又不知到你提供的元素是啥,因此也就不知道比较的规则,所以你可以在元素对应的类的内部提供比较规则,也可以在创建集合对象时使用带参构造提供比较规则。
集合可以分为单列集合和双列集合,单列集合实现了迭代器的接口,因此可以使用迭代器。双列集合没有实现迭代器接口,因此不可以使用迭代器。
一.单列集合:List和Set。List支持索引,可以存储重复的数据元素,元素的迭代顺序和插入顺序一致。Set则正好相反,不支持索引,允许重复元素出现,元素的迭代顺序与插入顺序无关。
1.1 List根据物理实现方式不同分为ArrayList和LinkList两种集合类。
ArrayList默认大小为10,扩容规则为原集合大小*1.5+1;
LinkList底层使用双向链表实现
1.2 Set
TreeSet集合内部使用红黑树来组织数据元素。
HashSet内部使用散列表来组织数据元素。(数组+链表+红黑树)
二.双列集合
HashMap

全部评论

相关推荐

不愿透露姓名的神秘牛友
02-26 16:57
明天不下雨了:把第二个项目放第一个去,其他没什么问题,多投,这世道就这样
点赞 评论 收藏
分享
佛系的本杰明反对画饼:个人看法,实习经历那段是败笔,可以删掉,它和你目标岗位没什么关系,没有用到什么专业技能,甚至会降低你项目经历内容的可信度。个人技能那里可以再多写一点,去boss直聘上看别人写的岗位要求,可以把你会的整合一下,比如熟悉常规的开关电源拓扑结构(BUCK、正激、反激、LLC等),熟悉常用的通信总线协议和通信接口,如UART,IIC,SPI等。简历首先是HR看的,HR大多不懂技术,会从简历里去找关键字,你没有那些关键字他可能就把你筛掉了,所以个人技能尽量针对着岗位描述写一下。还有电赛获佳绩,获奖了就写什么奖,没获奖就把获佳绩删了吧,要不会让人感觉夸大。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务