本文讲述Java集合的类,和怎么使用这些集合的讲述。
集合
集合总体来说分为两种:单列集合Collection和双列集合Map
- Collection是单列集合的顶级接口,它包含了list和set集合
list集合包括了以下几种类型的集合
- LinkedList
- ArrayList
- Vector
set集合包含了以下几种类型的集合
HashSet
TreeSet
- Map是双列集合的顶级接口,它包含了Hashtable;HashMap;WeakHashMap
什么是Collection
Collection是最基本的集合接口,一个Collection代表一组Object,即Collection的元素(Elements)。Java SDK不提供直接继承自Collection的类,Java SDK提供的类都是继承自Collection的“子接口”如List和Set。
所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数用于创建一个空的Collection,有一个 Collection参数的构造函数用于创建一个新的Collection,这个新的Collection与传入的Collection有相同的元素。后一个构造函数允许用户复制一个Collection。
Collection集合常见的方法
- add(E o)方法
向列表的尾部追加指定的元素(可选操作).
- clear()方法
从列表中移除所有元素(可选操作)。
- contains(Object o)方法
如果列表包含指定的元素,则返回 true。
- equals(Object o)方法
比较指定的对象与列表是否相等。
- isEmpty()方法
如果列表不包含元素,则返回 true。
- remove(int index)方法
移除列表中指定位置的元素(可选操作)。
- size()方法
返回列表中的元素数。
什么是Map
Map 接口不是 Collection 接口的继承。而是从自己的用于维护键-值关联的接口层次结构入手。按定义,该接口描述了从不重复的键到值的映射。
我们可以把这个接口方法分成三组操作:改变、查询和提供可选视图。
改变操作允许您从映射中添加和除去键-值对。键和值都可以为 null。但是,您不能把Map 作为一个键或值添加给自身
Collection集合常见的方法
- Object put(Object key, Object value)方法
想集合中放入相应的key和value,一次只能放入一个
- Object remove(Object key)方法
删除集合中的value值
- void putAll(Map mapping)方法
一次性将数据全部放入集合中
- void clear()方法
将集合清空
- Object get(Object key)方法
根据key值获取相应的value
- boolean containsKey(Object key)方法
如果列表包含指定的元素,则返回 true
- int size()方法
获取集合的长度
- boolean isEmpty()方法
判断集合是否为空
Vector
- 最后讲一下这个单列集合的Vector类为什么不使用了的原因
使用ArrayList而不是Vector是因为默认情况下是非同步访问的,Vector同步了每个方法,通常有想要同步的是整个操作序列。同步单个的操作也不安全(如果你迭代一个Vector,你还是要加锁,以避免其它线程在同一时刻改变集合).而且效率更慢。当然同样有锁的开销即使你不需要,这是个很糟糕的方法在默认情况下同步访问。
事实上Vector结合了“可变数组”的集合和同步每个操作的实现。这是另外一个设计上的缺陷。Vector还有些遗留的方法在枚举和元素获取的方法,这些方法不同于List接口,如果这些方法在代码中程序员更趋向于想用它。尽管枚举速度更快,但是他们不能检查如果集合在迭代的时候修改了,这样将导致问题。所以也导致了Vector的不使用。