------- android培训、java培训、期待与您交流! ----------
面向对象语言对事物的体现都是以对象的形式,所以为了方便对多个对象的操作,就对对象进行存储,集合就是存储对象最常用的一种方式。数组虽然也可以存储对象,但长度是固定的;集合长度是可变的。数组中可以存储基本数据类型,集合只能存储对象。集合长度是可变的,集合可以存储不同类型的对象。集合就是一个容器,每个容器对数据的存储方式不同,所以出现了各种不同的容器,存储方式称之为:数据结构。
整个集合类的继承体系如图所示:
Collection集合派系:
List
这个派系,可以存储重复的元素,这个派系,是一个有序的(存储和取出的顺序一致)存储到List中的对象,都有下标,ArrayList 是一个容器,初始容量是10,每次增长50%,底层存储对象采用数组实现,是线程不同步的集合,查询效率快,增删慢。LinkedList 是一个容器,底层存储对象采用是链表数据结构,是线程不同步的集合,查询慢,增删块。
Set
这个派系,不允许存储重复的元素,是一个无序的(存入和取出的顺序),存储到Set集合中的对象,没有下标,HashSet是一个容器,存储对象的底层结构是哈希表结构,是线程不同步的集合。TreeSet是一个容器,存储对象的底层结构是二叉树,是线程不同步的集合,对于存储到这个集合中的对象需要进行自然顺序的排序。
Map
Map集合存储的是键值对,一次存储两个对象,一个叫做健,一个叫做值。 一个键只能对应一个值 (夫妻关系),键不允许重复的,值可以重复。HashMap底层结构哈希表结构,是线程不同步的集合,可以存储null值,和null键。TreeMap底层是红黑树结构是线程不同步的集合,对于存储的键,进行自然顺序的排序,排序参考TreeSet。Hashtable底层哈希表结构,是线程同步的集合,不存储null值和null键。