超级接口: Iterable接口(在lang包中), Collection是其子接口;
Collection 根接口(util包中的接口)
List子接口 Set子接口
List接口的常用实现类:
ArrayList LinkedList Vector
Set接口的常用实现类:
TreeSet HashSet LinkedHashSet
ArrayList的父类是AbstractList 实现了List接口
LinkedList的爷爷是AbstractList 实现了List接口
Vector的父类是AbstractList 实现了List接口
TreeSet的父类是AbstractSet 实现了Set接口
HashSet的父类是AbstractSet 实现了Set接口
LinkedHashSet的父类是HashSet 实现了Set接口
AbstractMap类的父类是Object 实现了Map接口
HashMap的父类是AbstractMap 再次实现了Map接口
TreeMap的父类是AbstractMap 即也实现了Map接口
LinkedHashMap的父类是HashMap 再次实现了Map接口
Hashtable的父类是Dictionary 实现了Map接口
父类已经实现了Map集合,其子类再次实现Map集合为了:强制子类重写父类实现所有接口的方法.
List 集合适合维护线性结构的数据(有序可重复)
Set 集合适合数据查找(无序不可重复,但TreeSet是特例,把值按字母顺序排序A-Z,a-z)
Map 集合适合保存键值对格式的数据(无序不可重复)
ArrayList:数组结构,查询快,修改,删除,插入慢.
LinkedList:双向循环链表结构,插入,删除,修改快,查询慢.
Vector:与ArrayList结构一样,区别:Vector线程安全,效率低.
TressSet:排序树结构,有序,所以查询效率最高,但维护数据的有序性比较困难,所以数据添加等效率低.
HashSet:散列算法,查询性能高,维护成本低.
LinkedHashSet:和HashSet基本相同,只是使用链表保存了元素加入的顺序,使输出对象时会按照加入顺序排序.
HashMap:线程不安全,效率高,异步不需等待.键值都可为null
Hashtable:线程安全,效率低,同步需要等待.键值都不可为null
HashMap和Set之间的关系:
1.Set的底层实现就是Map
2.Set中的add()方法返回的是Map.put(key,PRESENT)来实现的
3.因为Map的键不可重复,所以也就是Set为什么无序不可重复的原因
4.TreeSet底层是TreeMap
Collection 根接口(util包中的接口)
List子接口 Set子接口
List接口的常用实现类:
ArrayList LinkedList Vector
Set接口的常用实现类:
TreeSet HashSet LinkedHashSet
ArrayList的父类是AbstractList 实现了List接口
LinkedList的爷爷是AbstractList 实现了List接口
Vector的父类是AbstractList 实现了List接口
TreeSet的父类是AbstractSet 实现了Set接口
HashSet的父类是AbstractSet 实现了Set接口
LinkedHashSet的父类是HashSet 实现了Set接口
Map接口(util包中的接口)
Map接口的常用实现类: AbstractMap HashMap LinkedHashMap TreeMap HashtableAbstractMap类的父类是Object 实现了Map接口
HashMap的父类是AbstractMap 再次实现了Map接口
TreeMap的父类是AbstractMap 即也实现了Map接口
LinkedHashMap的父类是HashMap 再次实现了Map接口
Hashtable的父类是Dictionary 实现了Map接口
父类已经实现了Map集合,其子类再次实现Map集合为了:强制子类重写父类实现所有接口的方法.
List 集合适合维护线性结构的数据(有序可重复)
Set 集合适合数据查找(无序不可重复,但TreeSet是特例,把值按字母顺序排序A-Z,a-z)
Map 集合适合保存键值对格式的数据(无序不可重复)
ArrayList:数组结构,查询快,修改,删除,插入慢.
LinkedList:双向循环链表结构,插入,删除,修改快,查询慢.
Vector:与ArrayList结构一样,区别:Vector线程安全,效率低.
TressSet:排序树结构,有序,所以查询效率最高,但维护数据的有序性比较困难,所以数据添加等效率低.
HashSet:散列算法,查询性能高,维护成本低.
LinkedHashSet:和HashSet基本相同,只是使用链表保存了元素加入的顺序,使输出对象时会按照加入顺序排序.
HashMap:线程不安全,效率高,异步不需等待.键值都可为null
Hashtable:线程安全,效率低,同步需要等待.键值都不可为null
HashMap和Set之间的关系:
1.Set的底层实现就是Map
2.Set中的add()方法返回的是Map.put(key,PRESENT)来实现的
3.因为Map的键不可重复,所以也就是Set为什么无序不可重复的原因
4.TreeSet底层是TreeMap