类集:在C++中叫作容器(container),而在Java中叫作类集算法
Collection(类集):最基本的集合接口,一个Collection表明一组Object集合。
Collection(类集)特形:
一、 元素(Elements)存放:
- 能够存放相同的Elements;
- 不能够存放相同的Elements;
二、 元素(Elements)顺序:
Collection(类集)优势:
- 程序处理对象组的方法标准化;
- 高性能;对基本类集(动态数组,连接表,树和散列表)的实现是高效率的。通常不多须要人工去对这些“数据引擎”编写代码。
- 容许不一样类型的类集以相同的方式和高度互操做方式工做;
- 容易扩展和/或修改;
- 拥有将标准数组融合到类集框架中的机制;
- 算法操做简单;类集算法在Collections类中被定义为静态方法(如:max、min、reverse.......),所以它们能够被全部的类集所利用。
- 类集元素(Elements)访问简单。iterator提供了一个多用途,标准化的方法,经过由Iterator定义的方法,任一类集类的元素都能被访问到。
集合框架:就是一个用来表示和操做集合的统一的架构,包含了实现集合的接口与类。
- Collection:集合层次中的根接口,JDK没有提供这个接口直接的实现类。
- List:是一个有序的集合,能够包含重复的元素。提供了按索引访问的方式。
ArrayList:能够通俗的理解可以自动增加容量的数组。
LinkedList:能够通谷的理解为存放Entry对象的双向循环链表。
- Set:不能包含重复的元素。SortedSet是一个按照升序排列元素的Set。
HashSet:能够通俗的理解为随意的向集合中抛对象,集合中的对象是无序的;
LinkedHashSet:能够通俗的理解为随意的向集合中抛对象,集合中的对象是按抛进的前后顺序进行链表排序的;
TreeSet:能够通俗的理解为随意的向集合中抛对象,集合中的对象是根据指定比较器进行排序的;
- Map:包含了key-value对。Map不能包含重复的key。SortedMap是一个按照升序排列key的Map。
HashMap:能够通俗的理解为存放不一样标记(Key)的对象(Value)的集合;
TreeMap:能够通俗的理解为存放不一样标记(Key)的对象(Value)的集合并按标记(Key)经过指定比较器进行排序。
注:
1. HashSet是经过HashMap实现的,TreeSet是经过TreeMap实现的,只不过Set用的只是Map的key 2. Map的key和Set都有一个共同的特性就是集合的惟一性.TreeMap更是多了一个排序的功能. 3. hashCode和equal()是HashMap用的, 由于无需排序因此只须要关注定位和惟一性便可. a. hashCode是用来计算hash值的,hash值是用来肯定hash表索引的. b. hash表中的一个索引处存放的是一张链表, 因此还要经过equal方法循环比较链上的每个对象才能够真正定位到键值对应的Entry. c. put时,若是hash表中没定位到,就在链表前加一个Entry,若是定位到了,则更换Entry中的value,并返回旧value 4. 因为TreeMap须要排序,因此须要一个Comparator为键值进行大小比较.固然也是用Comparator定位的. a. Comparator能够在建立TreeMap时指定 b. 若是建立时没有肯定,那么就会使用key.compareTo()方法,这就要求key必须实现Comparable接口. c. TreeMap是使用Tree数据结构实现的,因此使用compare接口就能够完成定位了.