集合——数组容器笔记

集合
数组
1)存储的元素数据类型必须一致
2)存储空间的分配是连续的,并且是一次性分配的
int[ ] a = new int[3]
a[3]=9;
ArrayIndexOutOfBoundsException; ——— 数组下标越界异常
1.List
1)ArrayList

实现原理:内部使用一个Objiect数组来实现
动态扩展:新建一个数组,长度增加,将原来的数组元素复制到新的数组去
1)顺序存储结构:ArrayList(数组)
逻辑存储结构通屋里存储结构一致
存:末尾添加元素:不需要移动元素
从中间添加:移动指定位置后面的所有元素
最差状况:从第一个位置添加元素
最好状况:从最后一个位置添加元素
取:随机访问
首地址:100第十个元素的地址:100+(10*数据类型所占大小)
2)链式存储结构:LinkedList
逻辑存储结构通屋里存储结构没有关系
存:不需要移动元素,只需要修改相应的next和prev指针
取:不能水机访问,平均性能会比较差
最佳状况:查找时是第一个
最差状况:查找时是最后一个
2.Set
集合:确定性,互异性,无序性
HashSet:无序性,不能重复
求余法:通过每个元素的hashcode对底层数组的长度求余,计算出改元素在数组上的位置
解决方案:拉链法
动态扩展
加载因子:百分比
HashSet底层是用HashMap
2)LinkedHashSet
继承自HashSet,同样具有互异性
输出顺序同插入顺序
在HahsSet基础上维护了一张独立的链表,用于记录每个元素的插入顺序

注意:Set中判断元素是否重复的步骤是先看hashcode,如果hashcode不同肯定不重复,忽略equals方法;如果hashcode相同(hash冲突)再根据元素所在类型重写的equals方法进行判断p
3)TreeSet—只能插入同一类型的数据
不可重复
String元素—按字典排序
数字—按数字大小排
实质上,排序规则靠插入的元素类型锁重写的compareTo方法来决定(负数表示小于,0表示等于,正数表示大于)
如果一个类实现Comparable接口的compareTo方法,那么一旦方法的返回结果==0,就认为该元素跟调用此方法的元素相等,并且会忽略equals方法执行。
☆Map ————面试考点
通过映射的原理(key,value)—键值对
1.HashMap
无序列
互异性(相同的key,后面把前面覆盖)
key和value均可以设为null,并且互异性规则同样适用
2.LinkedHasMap
key值相同(在后面的)覆盖,value相同也打印
value怎么放置就怎么拿出来
key和value均可以设为null,并且互异性规则同样适用
3.Treemap
按照key值大小排序和value值不相关
不能存储key为null的值,value可以为null值
key值数据类型要同,value对于数据类型无关
按照第一个元素来定义数据类型
4.HashTable
类似于HashMap,同样具有无序性和不可重复性
同HashMap的区别:
1)key和value都不能为空
2)会影响集合的数据结构的方法做了线层同步(有synchronized关键字)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值