集(Set):Set集合不区分元素的顺序,不允许包含相同的元素,访问集合中的元素只能根据元素本身来访问(也是集合里元素不允许重复的原因)。
映射(Map):Map集合保存的”键”-“值”对,“键”不能重复,而且一个“键”只能对应一个“值”,访问时只能根据每项元素的key来访问其value。
队列(Queue) 没什么好理解的,就是类似队伍的概念,详细的以后再说
四大天王已经诞生了
Set和Map本身是无序的,在此基础上又增加了排序的概念
所以家族里面又多出来sortedSet 和 sortedMap
既然有了排序的概念,那么在此之上继续增加个可搜索的功能也没什么好奇怪的
也就是
NavigableSet 和 NavigableMap
不得不说,美国人英语真好
Queue队列中又分为:
双端队列Deque (double ended queue)
所以主要的接口是这些:
Collection
|---List
|---Set
|---sortedSet
|---NavigableSet
|---Queue
|---Deque
|---Map
|---sortedMap
|---NavigableMap
至此,对于java集合来说,意识形态层面的设计已经完成.
集合框架的抽象类一人心难如万人意,集合框架设计者也明白这个道理
自然知道提供的实现类并不能满足所有人需求,自然有人想要自己实现,
如果从头写来一个自然是代价巨大,考虑到这点,集合框架提供了不少的抽象类,抽象类实现了大部分通用的方法
你想要实现,只需要继承抽象类,并且实现必要的几个方法即可
当然,集合的设计本身也是这个思路,一举两得,自己写的这么方便的东西,没道理不用;
抽象类大多数以Abs开头的
AbstractCollection:
提供了Collection的主要实现