java中Arraylist查找快原因是arraylist中的数据在内存中是连续的,成块的,查找的时候直接顺序遍历内存就可以了。实现了长度可变的数组,在内存中分配连续的空间。
而增删会带来元素的移动,增加数据会向后移动,删除数据会向前移动,所以影响效率,增删较慢。
主要是数据的组织方式不一样。
arraylist中的数据在内存中是连续的,成块的,查找的时候直接顺序遍历内存就可以了。插入删除的时候,就要把修改的那个节点之后的所有数据都向后移动,或者向前移动。所以就慢了。
而linkedlist在内存中是以链表形式组织的,链表这个玩意说来话太长了。链表中的数据在内存中是松散的,每一个节点都有一个指针指向下一个节点,这样查找起来就比较慢了。而插入删除的时候就是断开一个节点,然后插入删除之后再接起来。具体也不难。自己看书吧。
学java不能纯粹的啃java的语法,比如数据结构啊什么的也要涉及,你要是学了数据结构,就不会这么疑惑了。