OOP-20年秋第五周
JAVA第五周
-
Array Collection(←重点)
-
数组是固定的fixed,存放是连续的,可以随机访问
-
Collection只能有对象(基本数据类型会自动包装)
-
如果是字符串数组
–这个时候其实一个字符串都没有… -
二维数组是这么分配空间的呢?
–先弄一个一维数组,这些一维数组里面放的引用指向新的一维数组
–如此形成了二维数组,而空间并不是连续的
–由此有个区别 java和c不一样 二维可以长度有变 变成锯齿形状
 -
Arrays类类似System类是私有构造函数+静态方法
–可以使用sort快速排序之类的操作 -
Collection是泛型,而且是个接口
-
Set不可以重复
-
List list =new Arraylist();
–这样很好!比Arraylist list好
–为什么叫Arraylist?
–是一个线性表(数组实现的),他的数组扩容非常的复杂 -
什么是Linkedlist?
–单链表实现的 -
Set和List差距很大
–顺序怎么定的?
–待
–不能重复,会自动消掉

–因为没重写equals
–第一个加入一定不会比较,但是如果每个都会equals,那么加入第100个就比100次,非常的不合理
–检测重复值==查找
–为了达到O(1)需要一个hash算法
–所有判断都和你的hashcode业务逻辑有关系
13. 由于业务逻辑可能不太好,可能会hashcode冲突,这个时候再使用equals进行比较可以很大程度上减少时间
14. Hash算法到底提供了什么帮助呢?
–底层可以看做一个连排的桶,hash值是一个索引,如果hash一样就一起进入一个桶,这个时候会用equals比较,如果相等,不进入桶,如果不等,则正确进入桶内,此时equals比较的次数只看桶内长度的大小。
–不应该参加hash的是,会变的和辨识度低的,要选逻辑上很稳定的东西
15. 同时思考Treeset,它需要有一个能够比较大小的逻辑,所以需要重写compareto方法
–但是我从Comparable接口得到的比较不够灵活(natural)
–解决办法

–泛型规定了一个种类,乱七八糟的东西放不进去,特别安全

–防止你取的乱七八糟