• java 集合类结构图


      

    接口

    实现类

    保持插入顺序

    可重复

    排序

    使用说明

     List

    ArrayList

    Y

    Y

    N

    长于随机访问元素;但插入、删除元素较慢(数组特性)。

    LinkedList

    Y

    Y

    N

    插入、删除元素较快,但随即访问较慢(链表特性)。

     Set

    HashSet

    N

    N

    N

    使用散列,最快的获取元素方法。

    TreeSet

    N

    N

    Y

    将元素存储在红-黑树数据结构中。默认为升序。

    LinkedHashSet

    Y

    N

    N

    使用散列,同时使用链表来维护元素的插入顺序。

     Map

    HashMap

    N

    N

    N

    使用散列,提供最快的查找技术。

    TreeMap

    N

    N

    Y

    默认按照比较结果的升序保存键。

    LinkedHashMap

    Y

    N

    N

    按照插入顺序保存键,同时使用散列提高查找速度。

    List:

       有顺序的,元素可以重复;

       遍历:for,迭代;

        排序:Comparable Comparator Collections.sort()
    ArrayList:

        底层用数组实现的List;
        特点:查询效率高,增删效率低 轻量级 线程不安全;
    LinkedList:

        底层用双向循环链表实现的List;
        特点:查询效率低,增删效率高;

    Vector:

        底层用数组实现List接口的另一个类;
        特点:重量级,占据更多的系统开销,线程安全;

    ------------------------------------------------------------------------------------------------- 

    Set:

        无顺序的,元素不可重复(值不相同);
        遍历:迭代;
        排序:SortedSet
    HashSet:

        采用哈希算法来实现Set接口;
        唯一性保证:重复对象equals方法返回为true;
        重复对象hashCode方法返回相同的整数,不同对象hashCode尽量保证不同(提高效率);

    SortedSet:

        对一个Set排序;
    TreeSet:

        在元素添加的同时,进行排序。也要给出排序规则;
        唯一性保证:根据排序规则,compareTo方法返回为0,就可以认定两个对象中有一个是重复对象。

    ------------------------------------------------------------------------------------------------- 

    Map:

        元素是键值对:key唯一不可重复,value可重复;

        遍历:先迭代遍历key的集合,再根据key得到value;

    SortedMap:元素自动对key排序

    HashMap:

        轻量级,线程不安全,允许key或者value是null;
    Hashtable:

        重量级,线程安全,不允许key或者value是null;
        Properties:Hashtable的子类,key和value都是String

    TreeMap:

        集合是指一个对象可以容纳了多个对象(不是引用),这个集合对象主要用来管理维护一系列相似的对象。 

  • 相关阅读:
    好消息:Dubbo & Spring Boot要来了
    过年回家,程序猿最怕的5件事
    到底什么是分布式系统?
    SLA服务可用性4个9是什么意思?怎么达到?
    漏洞:会话固定攻击(session fixation attack)
    Mybatis传递多个参数的4种方式(干货)
    注意:阿里Druid连接池监控的两个坑
    消息中间件ActiveMQ、RabbitMQ、RocketMQ、ZeroMQ、Kafka如何选型?
    Java程序员必须掌握的常用Linux命令。
    编程词汇
  • 原文地址:https://www.cnblogs.com/thinksasa/p/2744799.html
Copyright © 2020-2023  润新知