集合:存储对象的容器,集合中可以存储任意类型的对象,而且长度可以变。
1.2、什么是数组数组就是存储数据长度固定的容器,保证多个数据的数据类型要一致。
1.3、集合和数组的区别数组和集合类都是容器 1.数组长度是固定的,集合长度是可变的。 2.数组中可以存储基本数据类型,集合只能存储对象 3.数组中存储数据类型是单一的,集合中可以存储任意类型的对象。 4.集合类的特点:用于存储对象,长度是可变得,可以存储不同类型的对象。 5.数组的缺点:存储类型单一的数据容器,操作复杂(数组一旦声明好不可变)CRUD2、ArrayList和linkedList 2.1、ArrayList
1.数组实现,查找快,增删慢
2.数组为什么查询快?
因为数组的内存空间地址是连续的。数组是可以直接按索引查找,所以查找时较快。
3.数组为什么增删慢?
增删的时候会牵扯到数组扩容,以及拷贝元素,所以慢。
2.2、linkedList1.linkedList链表实现,增删块,查找慢。
2.为什么查找慢?
因为在内存中的地址不连续,需要让上一个元素记住下一个元素,每个元素都保存有下一个元素的位置,查询的时候需要一个一个遍历,所以效率较低。
3.为什么增删块?
链表在插入新元素的时候,只需要让前一个元素记住新元素,让新元素记住下一个元素就可以了。所以增删快。
3、HashSet1.添加元素的过程
1.添加元素add(key)->put(key,value)->首先计算hash(key) (h=key.hashCode())^(h>>>16)哈希散列 避免哈希冲突 2.会根据计算的hash值,计算存储在哈希桶中的哪一个下标位置(n-1)&hash; 3.一旦出现有hash值相同的情况(位于同一个哈希桶中),必须比较equals()是否相同; 若equals()比较相同,则不进行重复存放; 若equals()比较不同,则会放入同一个哈希桶中,以链表的方式追加放置(若当前已经是红黑树结构,则直接将元素添加至红黑树中),直到达到阈值8,则会将链表装换成红黑树。 4.若没有出现hash值相同的情况,则直接根据计算出来的下标进行存放位置。



