您的位置:首页 > 编程语言 > Java开发

Java Collections Framework - Java集合框架List,Map,Set等全面介绍之概要篇

2009-04-22 22:40 731 查看
Quotes: http://www.lifevv.com/java/doc/20071102134529454.html

集合指多个元素的聚集体。Java Collections Framework是Java提供的对集合进行定义,操作,和管理的包含一组接口,类的体系结构。本文对Java Collections Framework的体系结构作一个全面深入的介绍。

Java集合框架的基本接口/类层次结构:

java.util.Collection [I]
+--java.util.List [I]
+--java.util.ArrayList [C]
+--java.util.LinkedList [C]
+--java.util.Vector [C]
+--java.util.Stack
+--java.util.Set [I]
+--java.util.HashSet [C]
+--java.util.SortedSet [I]
+--java.util.TreeSet [C]
java.util.Map
+--java.util.SortedMap [I]
+--java.util.TreeMap [C]
+--java.util.Hashtable [C]
+--java.util.HashMap [C]
+--java.util.LinkedHashMap [C]
+--java.util.WeakHashMap [C]

[I]:接口
[C]:类

Collection集合
Collection是最基本的集合接口,一个Collection代表一组Object的集合,这些Object被称作Collection的元素。
根据用途的不同,Collection又划分为List与Set。

Collection接口的主要接口方法有:

view plainprint?

public interface Collection

extends Iterable

{

//取得Collection的容量(元素数目)

public abstract int size();

//判断是否为空

public abstract boolean isEmpty();

//判断是否包含某对象元素

public abstract boolean contains(Object obj);

//取得对所有元素的遍历。可以通过Iterator提供的方法遍历集合的元素

public abstract Iterator iterator();

//将集合元素以数据形式返回

public abstract Object[] toArray();

public abstract Object[] toArray(Object aobj[]);

//向集合体插入一个新的元素

public abstract boolean add(Object obj);

//从集合体删除一个元素

public abstract boolean remove(Object obj);

//是否包含所有collection里的所有元素

public abstract boolean containsAll(Collection collection);

//插入collection里的所有元素

public abstract boolean addAll(Collection collection);

//移除collection里的所有元素

public abstract boolean removeAll(Collection collection);

public abstract boolean retainAll(Collection collection);

//移除所有元素

public abstract void clear();

//... other methods

}

public interface Collection
extends Iterable
{
//取得Collection的容量(元素数目)
public abstract int size();
//判断是否为空
public abstract boolean isEmpty();
//判断是否包含某对象元素
public abstract boolean contains(Object obj);
//取得对所有元素的遍历。可以通过Iterator提供的方法遍历集合的元素
public abstract Iterator iterator();
//将集合元素以数据形式返回
public abstract Object[] toArray();
public abstract Object[] toArray(Object aobj[]);
//向集合体插入一个新的元素
public abstract boolean add(Object obj);
//从集合体删除一个元素
public abstract boolean remove(Object obj);
//是否包含所有collection里的所有元素
public abstract boolean containsAll(Collection collection);
//插入collection里的所有元素
public abstract boolean addAll(Collection collection);
//移除collection里的所有元素
public abstract boolean removeAll(Collection collection);
public abstract boolean retainAll(Collection collection);
//移除所有元素
public abstract void clear();
//... other methods
}


该接口定义了集合的基本操作方法。

List集合
List继承自Collection接口。List是一种有序集合,List中的元素可以根据索引(顺序号:元素在集合中处于的位置信息)进行取得/删除/插入操作。
跟Set集合不同的是,List允许有重复元素。对于满足e1.equals(e2)条件的e1与e2对象元素,可以同时存在于List集合中。当然,也有List的实现类不允许重复元素的存在。
同时,List还提供一个listIterator()方法,返回一个ListIterator接口对象,和Iterator接口相比,ListIterator添加元素的添加,删除,和设定等方法,还能向前或向后遍历。

List接口添加的主要方法有:

view plainprint?

public interface List

extends Collection

{

//... other Collection methods

//根据索引取得元素

public abstract Object get(int i);

//在指定位置(索引)处插入新的元素

public abstract Object set(int i, Object obj);

//在List的尾部插入新的元素

public abstract void add(int i, Object obj);

//删除指定位置(索引)处的元素

public abstract Object remove(int i);

//取得指定对象的最开始的索引位置

public abstract int indexOf(Object obj);

//取得指定对象的最后的索引位置

public abstract int lastIndexOf(Object obj);

//List提供的新的遍历方法

public abstract ListIterator listIterator();

//从指定位置i处开始迭代。最初next()方法返回的将是位置i处的元素。

public abstract ListIterator listIterator(int i);

//取得从位置i到j的所有元素(包含i但不包含j位置的元素),返回一个新的集合对象。

public abstract List subList(int i, int j);

}

public interface List
extends Collection
{
//... other Collection methods

//根据索引取得元素
public abstract Object get(int i);
//在指定位置(索引)处插入新的元素
public abstract Object set(int i, Object obj);
//在List的尾部插入新的元素
public abstract void add(int i, Object obj);
//删除指定位置(索引)处的元素
public abstract Object remove(int i);
//取得指定对象的最开始的索引位置
public abstract int indexOf(Object obj);
//取得指定对象的最后的索引位置
public abstract int lastIndexOf(Object obj);
//List提供的新的遍历方法
public abstract ListIterator listIterator();
//从指定位置i处开始迭代。最初next()方法返回的将是位置i处的元素。
public abstract ListIterator listIterator(int i);
//取得从位置i到j的所有元素(包含i但不包含j位置的元素),返回一个新的集合对象。
public abstract List subList(int i, int j);
}


Set集合
Set
继承自Collection接口。Set是一种不能包含有重复元素的集合,即对于满足e1.equals(e2)条件的e1与e2对象元素,不能同时存在
于同一个Set集合里,换句话说,Set集合里任意两个元素e1和e2都满足e1.equals(e2)==false条件,Set最多有一个null元
素。
因为Set的这个制约,在使用Set集合的时候,应该注意:
1,为Set集合里的元素的实现类实现一个有效的equals(Object)方法。
2,对Set的构造函数,传入的Collection参数不能包含重复的元素。

Set接口里定义的方法与Collection基本一样,这里不再重述。

Map集合
Map没有继承Collection接口。也就是说Map和Collection是2种不同的集合。Collection可以看作是(value)的集合,而Map可以看作是(key,value)的集合。
Map接口由Map的内容提供3种类型的集合视图,一组key集合,一组value集合,或者一组key-value映射关系的集合

Map接口

view plainprint?

public interface Map

{

//

public static interface Entry

{

public abstract Object getKey();

public abstract Object getValue();

public abstract Object setValue(Object obj);

//...

}

//作用基本等同Collection接口的方法

public abstract int size();

public abstract boolean isEmpty();

public abstract boolean containsKey(Object obj);

public abstract boolean containsValue(Object obj);

public abstract Object get(Object obj);

public abstract Object put(Object obj, Object obj1);

public abstract Object remove(Object obj);

public abstract void clear();

//添加map里包含的所有元素

public abstract void putAll(Map map);

//key集合

public abstract Set keySet();

//value集合

public abstract Collection values();

//key-value映射关系的集合Set<Entry>

public abstract Set entrySet();

//...

}

public interface Map
{
//
public static interface Entry
{
public abstract Object getKey();
public abstract Object getValue();
public abstract Object setValue(Object obj);
//...
}
//作用基本等同Collection接口的方法
public abstract int size();
public abstract boolean isEmpty();
public abstract boolean containsKey(Object obj);
public abstract boolean containsValue(Object obj);
public abstract Object get(Object obj);
public abstract Object put(Object obj, Object obj1);
public abstract Object remove(Object obj);
public abstract void clear();

//添加map里包含的所有元素
public abstract void putAll(Map map);
//key集合
public abstract Set keySet();
//value集合
public abstract Collection values();
//key-value映射关系的集合Set<Entry>
public abstract Set entrySet();
//...
}


集合的遍历:
所有java.util.Collection的实现类必须实现
public abstract Iterator iterator();
方法以支持对所包含的对象进行遍历。

java.util.Iterator [I]
+--java.util.ListIterator [I]

Iterator接口:

view plainprint?

public interface Iterator

{

//判断是否存在下一个元素

public abstract boolean hasNext();

//返回下一个可用的元素

public abstract Object next();

//移除当前元素

public abstract void remove();

}

public interface Iterator
{
//判断是否存在下一个元素
public abstract boolean hasNext();
//返回下一个可用的元素
public abstract Object next();
//移除当前元素
public abstract void remove();
}


ListIterator接口:

view plainprint?

public interface ListIterator

extends Iterator

{

//other methods defined in Iterator

//判断是否存在上一个元素

public abstract boolean hasPrevious();

//返回上一个可用的元素

public abstract Object previous();

//取得下一个可用元素的索引位置

public abstract int nextIndex();

//取得上一个可用元素的索引位置

public abstract int previousIndex();

//替换当前位置的元素

public abstract void set(Object obj);

//在当前位置插入新元素

public abstract void add(Object obj);

}

public interface ListIterator
extends Iterator
{
//other methods defined in Iterator

//判断是否存在上一个元素
public abstract boolean hasPrevious();
//返回上一个可用的元素
public abstract Object previous();
//取得下一个可用元素的索引位置
public abstract int nextIndex();
//取得上一个可用元素的索引位置
public abstract int previousIndex();
//替换当前位置的元素
public abstract void set(Object obj);
//在当前位置插入新元素
public abstract void add(Object obj);
}


对集合操作的工具类
Java提供了java.util.Collections,以及java.util.Arrays类简化对集合的操作
java.util.Collections主要提供一些static方法用来操作或创建Collection,Map等集合。
java.util.Arrays主要提供static方法对数组进行操作。

参考资料
Java Collections Framework:
http://java.sun.com/j2se/1.5.0/docs/guide/collections/

相关文章链接

Java Collections Framework - Java集合框架之List篇 ArrayList与LinkedList等的性能比较 - (2007-11-28 11:37)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: