数组 会在内存中划分出一块连续的内存,然后当有数据进入的时候会将数据按顺序的存储在这块连续的内存中。当需要读取数组中的数据时,需要提供数组中的索引,然后数组根据索引将内存中的数据取出来,返回给读取程序。在Java中并不是所有的数据都能存储到数组中,只有相同类型的数据才可以一起存储到数组中。要插入和删除就需要变更整个数组中的数据的位置。
链表 ,链表在存储数据的内存中有两块区域,一块区域用来存储数据,一块区域用来记录下一个数据保存在哪里(指向下一个数据的指针)。当有数据进入链表时候,会根据指针找到下一个存储数据的位置,然后把数据保存起来,然后再指向下一个存储数据的位置。这样链表就把一些碎片空间利用起来了,虽然链表是线性表,但是并不会按线性的顺序存储数据。
栈 先进后出 可以由数组 链表组成
队列 先进先出 可以由数组链表组成
Arraylist 底层数组 查找快 增删慢
LinkedList 底层链表结构 增删慢 查找快
vacator 底层数组 但是线程安全的 使用synchronized
Arraylist 实现 序列化接口 seriousId为版本号 不对应无法反序列化
实现randomget接口
线程安全替换Arraylist vactor reedwriteList (可以保证读的同时写 内部复制了一个arrayList)currentsyconizedArraylist