Java集合框架解析(1) - 初识

我们都知道在Java中,集合框架在Java基础中有很大的分量,集合中的Map、Collection 、List、Set接口,子类HashMap,HashSet、ArrayList等,这些接口和类的作用及实现方式都是不一样的,接下来我们重新认识一下这些接口和类吧!!

我们先看看关系图
Java集合框架关系图.png

关系图中所表现出的,Map因为数据结构的原因所以是独立接口,List、Set数据类型一致所以可以继承相同的Collection接口;
Map实现类:HashMap、Hashtable、LinkedHashMap;
List实现类:Vector、ArrayList、LinkedList;
Set实现类:TreeSet、HashSet、LinkedHashSet;
当然,笔者列出的这几个类并非所有的实现类,只是我们经常在面试或者码代码中所遇到的。

下面从jdk中列举出Map、List、Set的一些核心函数
Map

public interface Map {
    int size(); // 集合大小
    boolean isEmpty(); // 是否为空
    boolean containsKey(Object key); // 是否包含此 key
    boolean containsValue(Object value); // 是否包含此value
    V get(Object key); // 根据key获取value
    V put(K key, V value); // 添加
    V remove(Object key); // 根据key删除
    void putAll(Map m); // 添加所有
    Set keySet(); // 获取keys
    Collection values(); // 获取 values
}

List

public interface List extends Collection {
    int size(); //集合大小
    boolean isEmpty(); //是否为空
    boolean contains(Object o); //是否包含
    boolean add(E e); //添加
    boolean remove(Object o); //根据数据删除
    boolean containsAll(Collection c); //是否包含所有
    boolean addAll(Collection c); //添加所有
    boolean removeAll(Collection c); //删除所有
    void clear(); //清空
    E get(int index); //获取
    E set(int index, E element); //替换
    void add(int index, E element); //添加
    E remove(int index); //根据下标删除
    int indexOf(Object o); //此参数首次出现的下标
    int lastIndexOf(Object o); //此参数最后出现的下标
    List subList(int fromIndex, int toIndex); //根据起始下标截取
}

Set

public interface Set extends Collection {
    int size(); //集合大小
    boolean isEmpty(); //是否空集合
    boolean contains(Object o);//是否包含
    boolean add(E e); //添加
    boolean remove(Object o); //根据参数
    boolean containsAll(Collection c); //是否包含所有参数
    boolean addAll(Collection c); //添加所有参数
    boolean removeAll(Collection c); //删除所有参数
    void clear(); //清空所有
}

可以从上面的核心方法看出,Map、Set、List大部分的函数的功能都是一样的,只不过因为数据结构或者功能性的不同而拆分为多个独立的分支;Map在实例化时必须知名K,V的数据类型,否则无法使用Map;而List、Set 也许要在实例化时指明数据类型,不过类型不是K,V结构,而是提供简单Object类型即可。

总结:
1:Map 为K,V结构,也就是我们常说的Key,Value结构;Map针对这种特殊的结构,提供了一些相对于List和Set 一些其他的支撑函数或者说进行了改造,比如 containsKey、containsValue、keySet、values等函数;
2:Map不继承与Collection 接口,但是List和Set继承于Collection接口;
3:Map、Set、List的核心函数大同小异,基本都是类似的,但实现方式各有不同;

今天就先到这儿了,后面我们慢慢深剖关于Java集合大大小小的知识及源码分析!!

你可能感兴趣的:(Java集合框架解析(1) - 初识)