集合的分类
collection为单列集合(每一个元素对应一个数据)
map为双列集合(每一个元素对应一对数据)
接下来对collection分析
1、单列集合的顶层接口,定义的是所有单列集合共有的功能
2、接口不可实例化,要调用接口的方法时,随意找个实现类即可(多态)
eg:Collection c = new ArrayList() **相当于是一个接口的调用new了一个实现类
3. Collection接口常用方法
add : 添加单个元素;
remove : 删除指定元素;
contains : 查找元素是否存在;
size : 获取元素个数;
isEmpty : 判断是否为空;
clear : 清空;
addAll : 添加多个元素;
containaAll :查找多个元素是否都存在;
removeAll : 删除多个元素;
4.
如上图可以用while循环来判断是否还有下一个元素
处理用迭代器也可以运用增强for循环
collection中的list接口:
** list同样可以运用迭代器和增强for循环进行元素的遍历
※ ArrayList 使用注意事项
允许存放任何元素,包括空元素null
ArrayList 是由数组来实现数据存储的;
ArrayList基本等同于 Vector ,除了 ArrayList是线程不安全的,但执行效率高,在多线程的情况下不建议用ArrayList;
※LinkedList的方法可以从网上查询
collection中的set接口:
1.Set 接口介绍:
- 无序(添加和取出的顺序不一致),没有索引;
- 不允许重复元素,所以最多包含一个null;
- JDK API 中Set的常用实现类有:HashSet 和 TreeSet
2.Set 接口的常用方法
和 List 接口一样,Set 接口也是 Collection 的子接口,所以常用方法和Collection接口一样
Set 接口的遍历方式同 Collection 的遍历一样:
迭代器遍历
增强 for
但 不能用索引 的方式来获取; (因为Set无序)
> HashSet
- HashSet实现了Set接口;
- HashSet实际上是HashMap,可以从源码看出;
- 可以存放 null 值,但是只能有一个null;
- HashSet 不保证元素是有序的,取决于hash后,再确定索引的结果;
- 不能有重复元素 / 对象;
接下来对map接口分析
1.Map 接口实现类的特点
2.Map 与 Collection 并列存在,用于保存具有映射关系的数据:Key - Value;
3.Map 中的 Key 和 Value 可以是任何引用类型的数据,会封装到 HashMap$Node对象中;
4.Map中的 Key 不允许重复,原因和 HashSet 一样;
5.Map 中的 Value 可以重复;
6.Map 的 Key 可以为 null,value 也可以为 null,但 key 为 null 只能有一个;
7常.用 String 类作为 Map 的 key,当然,其他类型也可以,但不常用;
8.Key 和 Value 之间存在单向一对一关系,即通过指定的 Key 总能找到对应的 Value;
> Map 接口和常用方法
put :添加
remove : 根据键删除映射关系
get : 根据键获取值
size : 获取元素个数
isEmpty : 判断个数是否为0
clear : 清除
containsKey : 查找键是否存在
> Hashtable
Hashtable的基本介绍:
存放的元素都是键值对,即 key - value;
Hashtable 的键和值都不能为 null,否则会抛出NullPointerException
Hashtable 使用方法基本上和 HashMap 一样;