(一)集合框架:程序员
Java语言的设计者对经常使用的数据结构和算法作了一些规范(接口)和实现(实现接口的类)。全部抽象出来的数据结构和操做(算法)统称为集合框架。算法
程序员在具体应用的时候,没必要考虑数据结构和算法实现细节,只须要用这些类建立一些对象,而后直接应用就能够了,这样就大大提升了编程效率。编程
(二)集合框架包含的内容:数组
(三)集合框架的接口(规范)数据结构
Collection接口:存储一组不惟一,无序的对象框架
List接口:存储一组不惟一,有序的对象数据结构和算法
Set接口:存储一组惟一,无序的对象工具
Map接口:存储一组键值对象,提升键(key)到值(value)的映射spa
(四)各类接口的实现类:设计
List接口的2个经常使用实现类:ArrayList和LinkedList
ArrayList类:在它的底层代码中,实际是有一个Object型数组,经过一些方法实现数组的扩容,数组自己长度是在定义的时候就不能改变,JDK的源码底层就是经过新建立一个数组,长度比原来的长,把以前原数组的每一个元素复制过来,而后把新数组的首地址赋值给了原数组的引用,就这样实现了可变长度数组;因此ArrayList的特色就是:遍历和随机访问的速度快,插入对象和删除对象的效率就低,由于底层的实现是经过数组来实现
LinkedList类:底层经过结点来实现的,它有2个Node结点属性,一个根结点first,一个尾结点last。添加的元素是保存在Node结点属性中item,看下面JDK源码,而后经过Node还有2个属性next和prev分别指向后一个保存元素的结点和指向前一个保存元素的结点;就这样造成一条逻辑上的一条链,它们在堆内存中内存是不连续的;因此LinkedList类的特色:访问元素的效率不高,可是插入和删除元素的效率高,由于经过结点改变指向就能够实现了。
Map的实现类我就只讲一个HashMap,TreeMap就不讲了,就是添加进去的时候,有必定的顺序,不过根本不重要,能够借助工具类Collections类方法来实现对集合元素的排序。
HashMap底层就是经过结点数组(数组+结点)来实现的,为何put()方法存key和value的时候,key不能重复,重复的话value会覆盖原先的value,key值在底层是经过它的hashCode来保证惟一性
一样的来说解一下HashSet,给你们看看一个它的JDK源码,map是HashMap类型,把数据存储到map的key中,因此说HashSet存储的元素是不能重复的
PRESENT是个常量
关于集合就只讲这些,大体了解底层的实现原理就能够了,方便理解和记忆。