Java(Android)数据结构汇总 -- 总纲

数据结构.jpg

目录:
Java(Android)数据结构汇总(一)-- List(上)
Java(Android)数据结构汇总(一)-- List(下)
Java(Android)数据结构汇总(二)-- Set(上)
Java(Android)数据结构汇总(二)-- Set(下)
Java(Android)数据结构汇总(三)-- Queue(上)
Java(Android)数据结构汇总(三)-- Queue(下)
Java(Android)数据结构汇总(四)-- Map(上)
Java(Android)数据结构汇总(四)-- Map(下)

前言

最近空闲了下来,于是打算将java(基于Android)的数据结构整理一下分享给大家。这次整理会结合一些相关的源码来一起讲解,源码是基于java 1.8版本的(android源码是基于API 27)。

Java集合接口

在讲具体的数据结构类之前,先来给大家梳理下java的两个主要集合接口:CollectionMap

Collection是一个单元素结构的集合接口,它定义了对一个集合的基本操作,定义如下:

// Collection继承至Iterable接口,所以可以实现迭代器功能
public interface Collection<E> extends Iterable<E> {
    // 获取集合大小
    int size();

    // 判断集合是否为空
    boolean isEmpty();

    // 判断集合是否含有指定元素
    boolean contains(Object o);

    // 返回集合的迭代器,用于遍历
    Iterator<E> iterator();

    // 将集合转换成数组
    Object[] toArray();

    // 将集合转换成数组(泛型)
    <T> T[] toArray(T[] a);

    // 添加一个指定元素
    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);

    // 清空集合
    void clear();
}

Map是一个key-value形式的键值对结构的集合接口,其中键不能重复。定义如下:

public interface Map<K, V> {
    // 获取集合大小(键值对的数量)
    int size();

    // 判断集合是否为空
    boolean isEmpty();

    // 判断集合是否包含指定的key
    boolean containsKey(Object key);

    // 判断集合是否包含指定的value
    boolean containsValue(Object value);

    // 在集合中查找指定key对应的value
    V get(Object key);

    // 往集合中添加一个key-value键值对(如果key存在则更新value)
    V put(K key, V value);
 
    // 根据指定的key删除一个键值对
    V remove(Object key);

    // 将指定的集合的键值对添加到当前集合中
    void putAll(Map<? extends K, ? extends V> m);

    // 清空集合
    void clear();

    // 获取当前集合的key集合
    Set<K> keySet();

    // 获取当前集合的value集合
    Collection<V> values();
   
    // 获取当前集合的键值对集合,一个Entry对象存放着一个键值对
    Set<Map.Entry<K, V>> entrySet();
}

我们常用的数据结构类都是基于这两个接口来实现的。它们大多都在java.util包下。后来java为了实现并发编程,在java.util.concurrent包下新增了一些和并发相关的数据结构类。

本系列文章的每类数据结构都会分为上下两篇,上篇主要是对java.util包下的数据结构类进行整理,下篇主要是对java.util.concurrent包下的数据结构类进行整理。具体内容请见前面的目录。

推荐阅读更多精彩内容