【集合】解析集合ArrayList和linkedlist

1.Arraylist和linkedlist内部结构解析,有什么区别?

ArrayList是动态数组结构的,lindedlist是链表结构的

  • ArrayList查询比较快,插入删除比较慢。因为Arraylist是动态数组,存储数据用的是一块连续的大内存,若是在某一个位置进行添加或者删除一个元素,则剩下的元素都要相应的向前或者向后移动。若该动态数组的元素很多,那么要移动的元素就会很多,所以效率就会很低。由于每个元素占用的内存一样,可以通过下标迅速访问元素中的任何数据,所以查找很快。
  • linkedlist查询比较慢,插入删除比较快。因为linkedlist是基于双向链表实现的,链表可以占用一段不连续的内存空间,双向链表元素含有前驱节点和后驱节点,里面存储的是前一个元素和后一个元素的位置,中间部分是业务数据。若是想添加或者删除元素,只需要更改前驱节点后驱节点的指向就可以了,删除也是一样,不像动态数组那么麻烦。但是因为占用的不是一段连续的内存空间,所以查询要一个一个查,比较慢。

linkedlist内部结构

和list不同的是hashmap是数组和链表的完美结合,具体解析可见:

https://blog.csdn.net/qq_30546099/article/details/89531651

你可能感兴趣的:(技术--开发类,Arraylist,linkedlist)