java集合数据结构汇总

一、Set

HashSet其实是用了HashMap的数据结构。HashMap的数据结构是一个数组+链表的形式。

关于HashMap数据结构的具体实现、以及扩容,参考博客:https://www.jianshu.com/p/8b372f3a195d/

TreeSet用了TreeMap的数据结构,TreeMap的本质是一个红黑树,TreeMap类里存着根节点:

private transient Entry<K,V> root;

二、List

ArrayList内部是数组:

transient Object[] elementData;
public boolean add(E e) {
        ensureCapacityInternal(size + 1);  // Increments modCount!!
        elementData[size++] = e;
        return true;
 }

LinkedList内部是链表:

 transient Node<E> first;

    /**
     * Pointer to last node.
     * Invariant: (first == null && last == null) ||
     *            (last.next == null && last.item != null)
     */
transient Node<E> last;
public boolean add(E e) {
        linkLast(e);
        return true;
}
 void linkLast(E e) {
        final Node<E> l = last;
        final Node<E> newNode = new Node<>(l, e, null);
        last = newNode;
        if (l == null)
            first = newNode;
        else
            l.next = newNode;
        size++;
        modCount++;
}

linkLast在链表结尾处添加节点,改变尾节点的next指针指向新节点。

三、Map

HashMap的数据结构是一个数组+链表的形式。

TreeMap的本质是一个红黑树。

LinkedHashMap的数据结构是HashMap+链表,既用HashMap的数据结构存储,又给每个节点加上before和after维护插入顺序。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Java集合类可用于存储数量不等的对象,并可以实现常用的数据结构如栈,队列等,Java集合还可以用于保存具有映射关...
    小徐andorid阅读 6,115评论 0 13
  • 原文地址 Java集合 Java集合框架:是一种工具类,就像是一个容器可以存储任意数量的具有共同属性的对象。 Ja...
    gyl_coder阅读 4,558评论 0 8
  • 一、集合入门总结 集合框架: Java中的集合框架大类可分为Collection和Map;两者的区别: 1、Col...
    程序员欧阳阅读 14,006评论 2 61
  • 目前正热炒的区块链概念吸引了我的注意,准备开始研究一下,稍做记录。 什么是区块链?这个概念源于比特币,比特币是中本...
    中统阅读 968评论 0 0
  • (本文参考自:戴朝华. 粒子群优化算法综述. Available at: http://www.scienceti...
    皮皮蒋阅读 8,499评论 0 3

友情链接更多精彩内容