Java Collection框架
在Java2中,有一套设计优良的接口和类组成了Java的Collection框架。这些接口和类是我们常用的,而且是所熟知的数据结构,如Map,List和Set。java用面向对象的设计对这些数据结构和算法进行了封装,使我们更加易于使用。我们也可以以这个框架为基础,定义更高级别的数据抽象。
Collection框架的核心有三种:Map,List和Set。这三种都是接口,常用集合类的继承结构如下:
Collection《——List《——Vector
Collection《——List《——ArrayList
Collection《——List《——LinkedList
Collection《——Set《——HashSet
Collection《——Set《——HashSet《——LinkedHashSet
Collection《——Set《——SortedSet《——TreeSet
Map《——HashMap
Map《——SortedMap《——TreeMap
List:类似于Java中的数组,有序的,可以使用索引,可以精确的控制元素的位置。可以有重复的元素,可以有Null元素。
Vector:基于数组的List,难以避免数组的限制,难以超越数组的性能,所以要优先选择数组。与ArrayList不同的是,Vector是线程同步的(synchronized)。
ArrayList:基于数组的list,不是线程同步的。
LinkedList:不是基于数组的,适合添加、删除操作。
Set:不包含重复元素,无序的Collection。与List不同在于,List多数基于数组,而Set多数基于HashMap。
Map:是把键对象和值对象进行关联的容器。
Vector、ArrayList和LinkedList的比较:
1、三者的性能都不如数组,所以能用数组优先选择数组
2、如果不考虑线程同步,没有频繁的插入删除,优先选择ArrayList
3、如果考虑线程同步,优先选择Vector
4、如果有频繁的插入删除,选择LinkedList
5、如果什么都不知道,用ArrayList没错。
Collections和Arrays:
Collections和Arrays是两个工具类,提供一些常用的静态方法帮助我们实现折半查找、排序等操作。