Java 源码 —— List

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/lanchunhui/article/details/82343476

0. 成员属性

transient Object[] elementData; // non-private to simplify nested class access
private static final Object[] EMPTY_ELEMENTDATA = {};
private static final Object[] DEFAULTCAPACITY_EMPTY_ELEMENTDATA = {};
private static final int DEFAULT_CAPACITY = 10;

1. 泛型

  • ArrayList 的泛型实现依赖内部的 Object 对象的数组;
public class ArrayList<E> {
    transient Object[] elementData; // non-private to simplify nested class access
    @SuppressWarnings("unchecked")

    E elementData(int index) {
        return (E) elementData[index];
    }
}

2. contains

  • 同理可知 indexOf、lastIndexOf 的实现;

public boolean contains(Object o) {
    return indexOf(o) >= 0;
}

public int indexOf(Object o) {
    if (o == null) {
        for (int i = 0; i < size; i++)
            if (elementData[i]==null)
                return i;
    } else {
        for (int i = 0; i < size; i++)
            if (o.equals(elementData[i]))
                return i;
    }
    return -1;
}

猜你喜欢

转载自blog.csdn.net/lanchunhui/article/details/82343476