集合的框架体系:
List等接口的实现子类有很多,仅列出常用的。
- 数组的不足(集合需求的出现):
- 集合特点:
一、Collection接口方法
1、Collection常用方法及其用法:
(Collection为接口,不能直接实例化,需要类实现接口)
2、Collection接口遍历元素方式
如果是Collection接口,可以用迭代器和增强for循环两种方式遍历,如果是List接口的子类还能用普通for
① 使用Iterator
(迭代器)
迭代器原理:
示例:
② 使用 增强for循环
示例:
③普通for循环
二、List接口和常用方法
1、List接口介绍:
List集合的元素有序、可重复、有索引(0开始)
2、List接口常用方法:
3、ArrayList注意事项
4、ArrayList扩容机制
5、Vector注意事项
- 基本介绍
多线程时更适合用Vector,其是线程安全的
- ArrayList比较Vector
6、LinkedList
- 说明
- LinkedList的底层操作机制
添加删除操作效率更高,不是通过数组扩容
- LinkedList的增删改查案例
- ArrayList和LinkedList的比较
三、set接口和常用方法
1、基本介绍
添加和取出的顺序不一样,但取出的顺序是固定的,即每次运行都是固定顺序
2、常用方法
实例:
3、HashSet
①说明
②HashSet扩容机制
底层机制简要说明:
4、LinkedHashSet
Set接口实现类—LinkedHashSet
说明:(有序,插入取出顺序一样,但插入表时不规律存储)、不重复)
底层源码解读:
三、Map接口
1、Map接口特点
- Map接口常用方法
-
key相同,value不同时,新value替代旧value
-
Map语法
1、添加元素 .put map.put(key,value); 2、通过get()方法获取key对应的value map.get("not")
2、Map接口常用方法
- 常用方法
- Map接口六大遍历方式
解析:
1、(少使用)
2、通过迭代器获取所有键(key),再通过map.get(key)
遍历键来获取值 ⭐️
3、通过迭代/循环 EntrySet来获取K-V
4、直接获取所有值(value),再遍历
每种Map遍历方式中又包含可用增强for和迭代器两种遍历的方法.
小结:
3、HashTable的基本介绍
- 基本介绍
- 扩容机制:
HashMap和HaspTable对比
**
4、Map接口实现类Properties
- 基本介绍
- 常用基本方法:
增\删\改\查(获取值)
四、集合选型
- 其中 :
List中:增删多:双链表增删更快; 改查多:通过数组的索引定位比较快;
插入和取出顺一致,但存储时是无序存储的;
TreeSet具备实现了Comparator接口的compare()方法,重写compare()方法可以自定义排序规则,对Integer类型数据存储顺序默认按数字从小到大排序,字母默认按从a-z排序.
TreeMap类似TreeSet,只是实现了compareable接口的compareTo()方法
五、Collections工具类
- 介绍
- 例: