Collection接口、Map 接口 的集合使用详细介绍
Collection 接口,定义保存 单值
迭代器:集合中的专用遍历方式
Iterator iterator() : 返回此集合中元素的迭代器,通过集合的iterator() 方法得到
迭代器是通过集合的iterator()方法得到,所以我们说它式依赖于集合存在
List 接口 定义保存可重复的单值规范
list集合
- 有序集合,有索引
- 允许存储重复的元素
- 元素存储有序
–ArrayList 实现类 使用数组机制(采用线程不安全机制存储 效率高) 增删慢、查找快
–LinkedList 实现类 使用链表 增删快、查找慢
–Vecter 实现类 使用数组机制(采用线程安全机制存储,效率低)
Set 接口 定义保存不可重复的单值规范
Set集合 特点:
- 元素存储无序
- 没有索引、只能通过迭代器或增强for循环遍历
- 不能存储重复元素
– HashSet 实现类 哈希算法保存数组
- 底层数据结构哈希表
- 不保证存储和取出的元素顺序一致
- 没有带索引的方法,所以不能使用普通循环
- 是不包含重复元素的集合
– TreeSet 实现类 排序
元素有序,可以按照一定的规则进行排序,具体排序方式取决于构造方法
--TreeSet():根据其元素的自然排序进行排序
--TreeSet(Comparator comparator) :根据指定的比较器进行排序
没有带索引的方法,所以不能使用普通for循环遍历
由于是Set集合,所以不包含重复元素的集合
– SortedSet 接口 在Set基础上定义了排序规则
Map 接口 定义保存键值对值规范 双列
Map集合的特点
键值对映射关系
一个键对应一个值
键不能重复,值可以重复
元素存取无序
–HashMap
- 实现类
- 通过哈希算法保存数据
- (线程不安全 效率高 可以添加空值 key == null,value ==null)
–Hashtable
- 实现类
- 通过哈希算法保存数据
- (线程安全 效率低 不可以添加控制 key!=null )
–SortedMap
- 接口
- 在map基础上增加了排序
–TreeMap 实现类 排序
集合的选用
主要根据集合的特点来选用,比如我们需要根据键值获取到元素值时就选用
Map
接口下的集合,需要排序时选择TreeMap
,不需要排序时就选择HashMap
,需要保证线程安全就选用ConcurrentHashMap
。当我们只需要存放元素值时,就选择实现
Collection
接口的集合,需要保证元素唯一时选择实现Set
接口的集合比如TreeSet
或HashSet
,不需要就选择实现List
接口的比如ArrayList
或LinkedList
,然后再根据实现这些接口的集合的特点来选用。