读Java编程艺术之笔记(集合类概述)
首先看看集合类与数组的不同之处:
1.集合类是Java的扩充API类,而数组是Java语言本身的数据结构;
2.集合储存的对象多少是动态可变的,而数组的大小是静态不变的;
3.集合只可用储存对象,而数组可用类储存基本类型数据,或者对象;
4.集合使用方法,如add()或者iterator(),来添加或访问对象,而数组使用下标;
5.集合游踪多的方法可调用,用来进行各种操作,而数组只有少数方法可以使用。
下图列出了Java的集合类及其继承关系(图转自http://baike.baidu.com/picview/1848852/1848852/0/263e802fe8883c231f3089b9.html#albumindex=0&picindex=0)
Collection接口定义了集合类的基本方法,并由HashSet、ArrayList,以及LinkedList来完善。接口Set和List的作用是将集合类分为不同功能的两大类,即不允许有重复元素的Set以及允许有重复元素的ArrayList和LinkedList。
集合类由两个独立的接口(Collection和Map)组成,但它们有着许多相同的操作方式。所不同之处在于对元素的储存方式(Map以key-value的形式保存值)。
接口 | 解释 |
Collection | 定义了Collection集合类操作的基本方法,如size(),isEmpty(),contains(),add(),remove(),iterator()等15个方法。从Iterable接口接口继承而来。 |
Set | 定义不允许重复元素的集合类的基本操作方法。继承Collection中定义的所有方法。 |
List | 定义允许重复元素的集合类的基本操作方法。除继承了Collection中定义的所有方法外,还定义了对一些方法的重载签名,并增添了新的方法。 |
Map | 定义了Map集合类操作的基本方法,如containsKey(),containsValue(),keySet(),put(),values()等14个方法。它本身是一个根接口。 |
常用Collection接口中的集合类
Collection集合类 | 解释 |
ArrayList | 数组式结构的集合类。其大小可自动调整。保持元素添加的位置。对元素的有序和随机访问非常有效,但不在结尾处添加元素时效率较低 |
LinkedList | 与ArrayList相似,但应用连接式结构。不在结尾位置添加和删除元素时非常有效 |
HashSet | 应用Hash码储存无重复元素的集合类。储存的元素必须完善hashCode()方法以保证其唯一性。 |
常用Map接口中的集合类
Map集合类 | 解释 |
HashMap | 与HashSet相似,但它们属于不同的接口。以key-value对的形式储存无重复元素。一个key只能引用一个对象值。 |
TreeMap | 与HashMap相似,但以树(Tree)的数据结构储存元素。元素必须是以key-value形式储存。一个key只能引用一个对象值。自动按照对象key排序。 |