目录
1.集合与数组的对比,及使用场景
2.集合的体系结构
3.collection集合的常用API
3.1 List集合特有方法(List类继承自Collection类)
3.1.1 ArrayList集合 (ArrayList类继承自List类)
3.1.2 linkedList集合(linkedList类继承自List类)
3.2 Set集合特点(Set类继承自Collection类)
3.2.1 HashSet集合(HashSet类继承自Set类)
3.2.2 linkedHashSed集合(linkedHashSet类继承自Set类)
3.2.3 TreeSet集合(TreeSet类继承自Set类)
4.集合的迭代器遍历
5.增强for循环的遍历使用方式
6.集合的并发修改异常问题
7.可变参数、操作集合的工具类Collections
8.泛型
8.1 泛型类
8.2 泛型方法
8.3 泛型接口
8.4 泛型通配符,泛型上下限
1.集合与数组的对比,及使用场景
集合的使用场景:
———————————————————————————————————————————
2.集合的体系结构
———————————————————————————————————————————
3.collection集合的常用API
———————————————————————————————————————————
3.1 List集合特有方法(List类继承自Collection类)
List集合特点:有序,可重复,有索引
———————————————————————————————————————————
3.1.1 ArrayList集合 (ArrayList类继承自List类)
ArrayList集合特点:底层是基于数组实现的,查询元素快,增删相对慢
扩展:如果ArrayList集合存储的元素超过容量会按照1.5倍扩容。
———————————————————————————————————————————
3.1.2 linkedList集合(linkedList类继承自List类)
linkedList集合特点:底层是基于双链表实现的,查询元素相对慢,增删首尾元素非常快
扩展:linkedList用来做栈储存的时候,可用push()方法替代addFirst();pop()方法替代removeFirst(),方法功能完全一样,只是名字不同,为的是体现出一种压栈、弹栈的思想,显得更专业。
———————————————————————————————————————————
3.2 Set集合特点(Set类继承自Collection类)
———————————————————————————————————————————
3.2.1 HashSet集合(HashSet类继承自Set类)
HashSet集合特点:底层采取哈希表存储数据,哈希表是一种对于增删改查性能都较好的结构。
哈希表的组成:
JDK8之前底层使用数组+链表组成;
JDK8之后底层使用数组+链表+红黑树组成。
原理:
JDK8之后当链表长度超过8时自动将链表转换为红黑树
———————————————————————————————————————————
3.2.2 linkedHashSed集合(linkedHashSet类继承自Set类)
与HashSed集合相比只是多了一个双链表记录存储顺序
———————————————————————————————————————————
3.2.3 TreeSet集合(TreeSet类继承自Set类)
TreeSet集合特点:TreeSet集合是一定要排序的,对于数值类型Integer、Double官方默认按照升序排序,字符串型默认按照首字符编号升序排序,若要存储自定义类型则需要自定义排序规则。
实例用法:
两种方式中关于返回值规则:
———————————————————————————————————————————
4.集合的迭代器遍历
———————————————————————————————————————————
5.增强for循环的遍历使用方式
使用方式 :变量名.for
———————————————————————————————————————————
6.集合的并发修改异常问题
出现原因:remove()方法会使指针后移,但删除元素后会导致后面的元素前移一位,于是此时的指针后移会导致指针跳过删除元素后面的一个元素从而出现bug。
解决方式:
1.用迭代器遍历集合,用迭代器的删除方法删。
2.用for循环删,for循环的两种方式原理:1.倒着删;2.删完后指针退一位。
如图:
———————————————————————————————————————————
7.可变参数、操作集合的工具类Collections
用法示例:
——————
———————————————————————————————————————————
8.泛型
———————————————————————————————————————————
8.1 泛型类
示例:
———————————————————————————————————————————
8.2 泛型方法
示例:
———————————————————————————————————————————
8.3 泛型接口
示例:
———————————————————————————————————————————
8.4 泛型通配符,泛型上下限
正确示例:
不用泛型就会出现这样的错误:



