zoukankan      html  css  js  c++  java
  • java-集合1

    1.Iterator接口,有hasNext(),next(),remove()方法

    2.List 接口继承Collection ,Collection接口 继承 Iterable

      a.ArrayList

      

    //一个Object数组,其中transient定义为不能序列化
    private transient Object[] elementData;
    //数组的长度
     private int size;


    // 添加元素完后,size+1,

    public boolean add(E e) {
    ensureCapacityInternal(size + 1); // Increments modCount!!
    elementData[size++] = e;
    return true;
    }

    private void ensureCapacityInternal(int minCapacity) {
    modCount++;
    // overflow-conscious code

    // 判断当前容量是否足够,如果不够,就扩容
    if (minCapacity - elementData.length > 0)
    grow(minCapacity);
    }

    private void grow(int minCapacity) {
    // overflow-conscious code
    int oldCapacity = elementData.length;

    //新容量大小等于 旧容量+旧容量/2
    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);
    }

    public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
    T[] copy = ((Object)newType == (Object)Object[].class)
    ? (T[]) new Object[newLength]
    : (T[]) Array.newInstance(newType.getComponentType(), newLength);

    //通过此方法拷贝一个新的对象数组,
    System.arraycopy(original, 0, copy, 0,
    Math.min(original.length, newLength));
    return copy;
    }

    // 每一个实现类都实现了一个自己的迭代器

    private class Itr implements Iterator<E> 



          b.LinkedList 双向链表

  • 相关阅读:
    说说与线程相关的方法
    sleep()和yield()有什么区别?
    同步和异步有何异同,分别在什么情况下使用?
    如何保证多个线程同时启动?
    volatile关键字能否保证线程安全?
    使用对象的wait()方法需要注意什么?
    乐观锁与悲观锁是什么?
    Condition实现等待、唤醒
    LongAdder与AtomicLong有什么区别?
    介绍一下ForkJoinPool的使用
  • 原文地址:https://www.cnblogs.com/suixin84/p/6743138.html
Copyright © 2011-2022 走看看