ArrayList是由数组支持的,数组按顺序放在内存中。这意味着,如果它是一个整数数组,每个使用4个字节,并从内存地址1000开始,则下一个元素将是1004。用于元素的确切地址,RAM内存的名称叫随机访问内存。在知道地址的情况下,它可以在恒定的时间里访问任何存储的存储单元。
也就是O(1);
那就有人问了 我的Array List存的是String对象
ArrayList<String> list = new ArrayList<>();
由于String是不定长的,那我如何得到准确位置呢?
对这个问题来说,其实 ArrayList 存的是 String 对象的地址,都是8个字节。所以从内存地址1000开始找第三个
1000+(3-1)*8=1016