Java聚合框架——基础接口

Java集合框架——基础接口

Java集合框架专题(学习的那个过程,请指教)



         Java集合框架——基础接口

 

先看图:

Java聚合框架——基础接口

 

上图中关键的接口有:

Collection   Set   List   Map   还有一个Iterator,还有一个是上图没有的Queue接口,也是继承Collection的。

图中的

1,短虚线,表示接口;

2,长虚线,表示抽象类;

3,实线,表示实现类;

4,加强线,表示重点;(没别的意思,这图不是我自己画的,只能解释一下)

5,虚线加实心箭头,表示当前接口实现了一个指向接口定义的方法。

6,Collections与Arrays是两个支持类,实现了很多的静态方法可以直接使用。(一定要看看)

基本图介绍完后,看具体的接口方法,很大程度上是这样的,理解了接口,也就理解了框架。

 

第1点:Collection

 

int size();                               //获取长度

 

boolean isEmpty();                //判断为空

 

boolean contains(Object o);  //判断是包含当前元素,它有两个可选择的异常;1,当类型不匹配时,抛出ClassCastException;2,当集合为NULL时,抛出NullPointerException。

 

Iterator<E> iterator();          //迭代器,不能保证顺序的返回元素(除非能够保证集合都是某个类的实例)

 

Object[] toArray();                //返回一个数组(如果集合满足迭代器的规则,返回的数组必须保证顺序)

 

<T> T[] toArray(T[] a);          //看上一点,泛型要主要类型,会抛出ArrayStoreException与NullPointerException两种异常,其实在toArray()也加一个NullPointerException为可选比较好,实际也是有的。

 

boolean add(E e);                 //增加一个元素到集合

 

boolean remove(Object o);   //从集合中移除一个元素

 

下面这部分是对组的操作

boolean containsAll(Collection<?> c);

boolean addAll(Collection<? extends E> c);

boolean removeAll(Collection<?> c);

boolean retainAll(Collection<?> c);                 //与removeAll的功能相反,移除不属于c的元素。

void clear();                                                     //清空集合

 

下面两个是

boolean equals(Object o);     //比较两个对象是否相等

int hashCode();                      //主要是加快比较,如果调用equals方法相等,hashCode必须相等,反过来是不成立的,这样就可以通过比较两个hashCode,如果不相等,equals就不相等。

 

第二点:Set (略,因为与Collection一样)没有加新方法,至于为什么要这个,而直接用Collection,这个有点像是儿子与侄子的关系,就是为了让Set与List接口平级,也许我的说法有些问题,因为我还没有想到别的比喻。

 

第三点:List

在Collection接口的基础上加了以下方法:

boolean addAll(int index, Collection<? extends E> c); //从指定位置插入

 

E get(int index);                      //获取指定位置的元素

E set(int index, E element);     //修改指定位置的元素

void add(int index, E element);//在指定的位置插入元素

E remove(int index);                //根据位置移除元素

int indexOf(Object o);              //返回第一次出现o元素的位置

int lastIndexOf(Object o);        //与上一条相反,最后的位置

ListIterator<E> listIterator();              //调用listIterator(0);所以只关注下面的方法及可

ListIterator<E> listIterator(int index);//其实这个方法是list自己的实现,而Iterator为了统一调用,最后也是调用这个方法,listIterator(),再到listIterator(0);这个方法实现了list表的迭代器,是特性,肯定是重点关注。

List<E> subList(int fromIndex, int toIndex);//返回一个从fromIndex到toIndex的list

 

第四点:Map<K,V>

与Collection没有直接的继承关系,只不过有一个返回Collection的values方法。

int size();

boolean isEmpty();

boolean containsKey(Object key);

boolean containsValue(Object value);

V get(Object key);

V put(K key, V value);

V remove(Object key);

void putAll(Map<? extends K, ? extends V> m);

void clear();

Set<K> keySet();

Collection<V> values();

Set<Map.Entry<K, V>> entrySet();

interface Entry<K,V>

 

 

boolean equals(Object o);

int hashCode();

 

突然不想加备注了,读者自己看吧,总不能总是依靠别人来哦,因为我写的这个,不是知识博文,也是过程博文。

 

 

差点把Queue给忘记了。

第五点:Queue

这个在继承Collection后,也是增加了自己的方法:

boolean add(E e);

boolean offer(E e);

E remove();

E poll();

E element();

E peek();

 

它在concurrent包中得到了重用,在util包中有Deque接口继承了它,再是LinkedList与ArrayDeque实现了Deque接口。这一块目前,网上资料不多,应该重点关注(刚好学好了,再去写线程池ThreadPoolExecutor类会比较深入些)。

 

写到这了,别的还在看。

 

 

 

 

 

 

 

1 楼 hibernate_spring 2011-12-21  
看到开始比较接口,接下来是不是要开始比较方法的实现了。Java聚合框架——基础接口
2 楼 man_yutao 2011-12-21  
表示关注Java聚合框架——基础接口