Collection和map

来源:互联网 发布:mysql统计不重复数据 编辑:程序博客网 时间:2024/05/29 14:29

最近发现适当的看些源码还是很有意思的。

java.util.Collection;

java.util.Map;
区分collection和map按存储单元值的个数来区分,collection一个单元存一个值,map一个单元存两个值key和value
collect这一特点可能联想到list,set,array map可能联想到hashmap,hashtable
首先collection的打开源码看一下
public interface Collection<E> extends Iterable<E> 
collection是接口
里面有一些我们常用到的方法:
int size();
boolean isEmpty();
boolean contains(Object o);
Iterator<E> iterator();
Object[] toArray();
boolean add(E e);
boolean remove(Object o);
boolean addAll(Collection<? extends E> c);
void clear();
boolean equals(Object o);
int hashCode();
这些都是collection里面的方法,所有类要implement collection必然要实现这些方法,想想我们那些类涉及到这些方法了
arraylist,hashset,我只想到这俩
看一下java.util.ArrayList;的源码
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable

      看一下AbstractList

public abstract class AbstractList<E> extends AbstractCollection<E> implements List<E>
public abstract class AbstractCollection<E> implements Collection<E>
public interface List<E> extends Collection<E> 
最后发现arraylist确实是collection扩展出来的
list多加了
int lastIndexOf(Object o);
int indexOf(Object o);
E get(int index);
E set(int index, E element);
等方法。
下面在来看一下Map的源码
publicinterface Map<K,V>{    int size();    boolean isEmpty();    boolean containsKey(Object key);    boolean containsValue(Object value);    V get(Objectkey);    V put(K key,V value);    V remove(Objectkey);    void putAll(Map<? extends K, ? extendsV>m);    void clear();    Set<K>keySet();    Collection<V>values();    Set<Map.Entry<K, V>>entrySet();
       //注意下面    interface Entry<K,V> {        K getKey();        V getValue();        V setValue(V value);        boolean equals(Object o);        int hashCode();
               ......
      }
}
在map接口里面有一个entry的接口  interface Entry<K,V> 
可以添加key,value的值
hashmap的extends和implement的情况
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable 
public abstract class AbstractMap<K,V> implements Map<K,V> 
接下来的几篇文章,我将会详细的讲解hashmap,arraylist等的数据结构