这是毕老师视频截的图 ,
参考此图
Collection
--List 元素有序的,元素可以重复,因为该集合有索引
--ArrayList 底层数组结构,特点:查询,修改速度快,增加删除稍慢,线程不同步,
默认长度10,超过10 ,new 50%增加的数组。
判断和删除以来equals
--LinkedList 链表结构,特点:查询稍慢,增加删除快
--Vector 底层是数组数据结构,线程同步。被ArrayList替代
默认长度10,超过10 ,new 100%增加的数组。支持枚举
--Set 元素是无序(存入和取出数序不一定一致,元素不可以重复
--HastSet 底层数据结构是哈希表 ,线程是非同步的。
如何保证元素唯一性,
通过元素的两个方法,hashCode和equals来完成
如果元素hashCode值相同,才会判断equals是否为true
如元素hashCode值不同,不会调用equals
判断元素是否存在,以及删除,依赖的方法是元素的hashCode和equals方法。
--TreeSet 底层数据结构是二叉树,
可以对Set集合中的元素进行排序
保证元素唯一性的方法是compareTo方法return 0;
TreeSet排序的第一种方式,让元素自身具备比较性
元素需要实现Compareable接口,覆盖compareTo方法。
这种方法也称为元素自然顺序
TreeSet排序第二种方式,自定义比较器
当两种排序都存在时,以比较器为主
定义比较器
定义一个类,实现Comparator接口,覆盖compare方法。
以return 0 判断元素是否相同
set集合功能和Collection是一致的
Map
--Hashtable 底层是哈希表数据结构,不可以存入空,线程同步 jdk1.0
--HashMap 底层是哈希表数据结构,可以存入空,线程不同步。jdk1.2 效率高
--TreeMap 底层是二叉树数据结构,线程不同步,可以用于给map集合中的键进行排序。
和Set很像,其实Set底层就是使用了Map集合。
map集合两种取出方式
1 Set<key> keySet:将map中所有的键存入到Set结合,因为set集合具备迭代器
所有可以迭代方式取出所有的键,在根据get方法,获取每一个键对应的值
map集合取出原理:将map集合转成set集合,通过迭代器取出。
2 entrySet
Set<Map.Entry<K,V>> entrySet()
返回此映射中包含的映射关系的 Set 视图。
将map集合中的映射关系存入到了set集合中
而这个关系的数据类型就是:Map.Entry
|