zoukankan      html  css  js  c++  java
  • java基础-arrayList

     
    ArrayList:
    结构之钱了解了,ArrayList()会构造出一个初始容量=10的空的列表;
    ArrayList()的增加和删除都是拷贝数组到新的数组(如果当前数组容量不足的话),把数组内的元素全部前移/后移去完成,然后把引用指向新的数组;
    LinkedList()是直接删除引用节点,并且重新改变前后节点的引用到前后元素;
    ArrayList()可以通过下标迅速找到对应的元素;
    线程同步,同样ArrayList不是线程安全的list,和LinkedList一样;
    ArrayList()扩容是按照当前容量的1.5倍扩容的(源码内写死的):
    /**
    * Increases the capacity to ensure that it can hold at least the
    * number of elements specified by the minimum capacity argument.
    *
    * @param minCapacity the desired minimum capacity
    */
    private void grow(int minCapacity) {
    // overflow-conscious code
    int oldCapacity = elementData.length;
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    if (newCapacity - minCapacity < 0)
    newCapacity = minCapacity;
    if (newCapacity - MAX_ARRAY_SIZE > 0)
    newCapacity = hugeCapacity(minCapacity);
    // minCapacity is usually close to size, so this is a win:
    elementData = Arrays.copyOf(elementData, newCapacity);
    }
    右移,>>为右移运算符,num >> 1,相当于num除以2
    int newCapacity = oldCapacity + (oldCapacity >> 1);
    这里相当于1.5倍;
     
     
    hashCode()和equals():
    到现在只用过equals,没用过hashCode;
    hashCode() 和 equal() 和 ==,在Java里用来对比两个对象是否相等一致;
    ==是对比引用地址(变量是否相等);
    equal是对比值(对比对象是否相等,默认等同于==,的也是对比对象的地址,但是对比对象内容的时候不等同==);
    hashCode是对比哈希值(返回哈希值,如果两个对象相等,那么它们的哈希值一定是相同的);
    如果两个对象根据eqaul()方法比较不相等,那么产生的哈希值不一定相等(碰撞的情况下还是会相等的);
    但是有一点:
    重写的equal()里一般比较的比较全面比较复杂,这样效率就比较低,而利用hashCode()进行对比,则只要生成一个hash值进行比较就可以了,效率很高,那么hashCode()既然效率这么高为什么还要equal()呢? 因为hashCode()并不是完全可靠,有时候不同的对象他们生成的hashcode也会一样(生成hash值得公式可能存在的问题),所以hashCode()只能说是大部分时候可靠,并不是绝对可靠;
     
     
    1.equal()相等的两个对象他们的hashCode()肯定相等,也就是用equal()对比是绝对可靠的。 
    2.hashCode()相等的两个对象他们的equal()不一定相等,也就是hashCode()不是绝对可靠的。
  • 相关阅读:
    探讨游戏服务器设计
    找规律 0 1 3 8 22 64
    mysql 字段对比工具
    游戏开发者网站大集合
    sizeof struct 问题
    微软智力题
    python+requests——读取二进制文件并保存在本地——一个图片作为示例
    python+requests——检查响应头是否存在
    python+requests——读取二进制文件并保存在本地——一个应用程序作为示例
    python+requests——URL的编码和解码
  • 原文地址:https://www.cnblogs.com/meijsuger/p/9567115.html
Copyright © 2011-2022 走看看