OOP-20年秋第五周

JAVA第五周

  1. Array Collection(←重点)

  2. 数组是固定的fixed,存放是连续的,可以随机访问

  3. Collection只能有对象(基本数据类型会自动包装)

  4. 如果是字符串数组
    –这个时候其实一个字符串都没有…

  5. 二维数组是这么分配空间的呢?
    –先弄一个一维数组,这些一维数组里面放的引用指向新的一维数组
    –如此形成了二维数组,而空间并不是连续的
    –由此有个区别 java和c不一样 二维可以长度有变 变成锯齿形状
    OOP-20年秋第五周

  6. Arrays类类似System类是私有构造函数+静态方法
    –可以使用sort快速排序之类的操作

  7. Collection是泛型,而且是个接口

  8. Set不可以重复

  9. List list =new Arraylist();
    –这样很好!比Arraylist list好
    –为什么叫Arraylist?
    –是一个线性表(数组实现的),他的数组扩容非常的复杂

  10. 什么是Linkedlist?
    –单链表实现的

  11. Set和List差距很大
    –顺序怎么定的?
    –待
    –不能重复,会自动消掉

OOP-20年秋第五周

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

–泛型规定了一个种类,乱七八糟的东西放不进去,特别安全
OOP-20年秋第五周

–防止你取的乱七八糟