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
–TreeMap 实现类 排序
集合的选用
主要根据集合的特点来选用,比如我们需要根据键值获取到元素值时就选用 Map 接口下的集合,需要排序时选择 TreeMap ,不需要排序时就选择 HashMap ,需要保证线程安全就选用 ConcurrentHashMap 。
当我们只需要存放元素值时,就选择实现Collection 接口的集合,需要保证元素唯一时选择实现 Set 接口的集合比如 TreeSet 或 HashSet ,不需要就选择实现 List 接口的比如 ArrayList 或 LinkedList ,然后再根据实现这些接口的集合的特点来选用。
|