数据结构List之ArrayList

ArrayList是List的一个实现,ArrayList底层是数组,线程不安全,在同时操作ArrayList时会出现错误,ArrayList中的get()和set()方法的运行时间比较短而remove()和add()方法的运行时间比较长,ArrayList的自动增长是以(1.5倍原来长度+1)的速度进行增长,我们可以使用反射根据以下的程序进行测试,ArrayList的初始长度为10.

package learnIng;

import java.lang.reflect.Field;
import java.util.ArrayList;

public class ArrayListCapa {
    public static void main(String[] args) {
        for (int j = 1; j < 100; j++) {
            ArrayList<Integer> squares = new ArrayList<Integer>();
            for (int i = 1; i < j; i++)
                squares.add(i);
            Class c = ((Object) squares).getClass();
            Field f;
            try {
                f = c.getDeclaredField("elementData");
                f.setAccessible(true);
                try {
                    Object[] o = (Object[]) f.get(squares);
                    System.out.println(o.length);
                } catch (IllegalArgumentException e) {
                    e.printStackTrace();
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            } catch (NoSuchFieldException e) {
                e.printStackTrace();
            } catch (SecurityException e) {
                e.printStackTrace();
            }
        }
    }
}

实验结果
10
10
10
10
10
10
10
10
10
10
10
16
16
16
16
16
16
25
25
25
25
25
25
25
25
25
38
38
38
38
38
38
38
38
38
38
38
38
38
58
58
58
58
58
58
58
58
58
58
58
58
58
58
58
58
58
58
58
58
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
88
133
133
133
133
133
133
133
133
133
133
根据实验结果我们可以看出默认的长度是10,增长速度是(1.5原长度+1)。

相关推荐
©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页