ArrayList 的特点:
1.底层数据结构是数组,自动复制扩容。
1.1ArrayList 扩容时是 10*1.5 =15
1.2StringBuilder 扩容时是 16 *2 +2 =34
1.3.本质都是通过重新创建新的数组,并且将旧的数组元素通过System.arrayCopy()方法复制进去的。
2.查询快,增删慢。
3.不是同步的,线程不安全,运行速度快。
Vector 的特点:
1.List属于集合框架中的接口,开始于JDK1.2版本。Vector开始于JDK1.0版本,从1.2开始改为实现接口list。
2.底层数据结构也是数组,和ArrayList相同。
3.Vector是线程安全的集合,运行速度慢,在开发中被ArrayList取代。
补充知识点,位于运算符。
进制
1.二进制时,3就表示 0000 0011
2.十六进制时,31就表示 0x0000 001f
位移运算符:>> 右移一位 相当于除以2 (相对于商来说)
0000 0100 = 4
>> 1
0000 0010 = 2
0000 0011 = 3
>>1
0000 0001 = 1
位移运算符: << 左移一位 相当于乘以2
0000 0011 = 3
1 <<
0000 0110 = 6
单向链表就像:老鹰抓小鸡中,小鸡都紧紧跟在母鸡后面组成的队形。
双向链表就像:大家手拉着手。
栈结构介绍:
** 队列的介绍:**
linkedList集合数据存储的结构是链表结构。方便元素添加、删除的集合。实际开发中对一个集合元素的添加与删除经常涉及到首尾操作,而linkedList提供了大量首尾操作的方法。如下图
linkedList是List的子类,List中的方法linkedList都是可以使用,这里就不做详细介绍,我们只需要了解linkedList的特有方法即可。在开发时,linkedList集合也可以作为堆栈,队列的结构使用。
方法演示:
linkedList
查阅Set集合的API介绍,通过元素的equals方法,来判断是否为重复元素,它是个不包含重复元素的集合。Set集合取出元素的方式可以采用:迭代器、增强for。
Set集合有多个子类,这里我们介绍其中的HashSet、linkedHashSet这两个集合。
查阅HashSet集合的API介绍:此类实现Set接口,由哈希表支持(实际上是一个 HashMap集合)。HashSet集合不能保证迭代的顺序与元素存储顺序相同。
HashSet集合,采用哈希表结构存储数据,保证元素唯一性的方式依赖于:hashCode()与equals()方法。