• Pivotal Cloud Technology | PivotalCloud 云技术


    Java容器

    集合是一种存储数据的容器,是Java开发中使用最频繁的对象类型之一.

    UA9TQf.png
    或许提起Collection,都会第一时间意识到List和Set以及Map等相关关键词。因为这几乎是我们日常开发里接触最多和遇见最频繁的,以及与数据处理交互最多的Java对象类型。换句话说,就是我们与数据进行处理的数据对象存储模型。但是:

    List->[AbstractList,ArrayList,AbstractSeaquentialList,LinkedList]
    Set->[AbstractSet,HashSet,SortedSet,TreeSet,LinkedHashSet]
    Map->[AbstractMap,SortedMap,TreeMap,HashMap,LinkedHashMap,ConcurrentHashMap]

    Collection容器

    UkIxu6.png
    UksgfO.png
    UAkGb8.png

    Collection容器包含List和Set以及Queue子容器。

    List接口

    UekOMj.png

    List接口的实现类主要有:ArrayList、LinkedList、Stack以及Vector等

    ArrayList[线程不安全]
    • ArrayList-uml结构图:
      UeAJeI.png
    LinkedList
    • LinkedList-uml结构图:
      UeAaY8.png

    Stack

    • Stack-uml结构图:
      UeAIX9.png

    Vector

    • Vector-uml结构图:
      UeATmR.png

    Set容器

    UeAv1e.png

    Set接口的实现类主要有:HashSet、TreeSet、LinkedHashSet等

    Queue容器

    Map容器

    UAZARH.png

    Map是一个键值对集合,存储键、值和之间的映射。Key无序,唯一;value 不要求有序,允许重复。Map没有继承于Collection接口,从Map集合中时,只要给出键对象,就会返回对应的值对象。

    在使用Java开发分布式系统以及应对高并发场景的情况,看得最多的就是在并发场景中切忌使用HashMap。也是最近几年面试热题之一,主要原因:

    • [1].在JDK1.8版本之前,并发场景使用HashMap会导致出现死循环,从而导致CPU使用率会居高不下,这主要是JDK在设计HashMap扩容机制的局限导致。
    • [2]在JDK1.8版本之后,虽然修复了HashMap扩容导致死循环的问题,但是在高并发场景下,依然会出现数据丢失以及不准确的情况发生。

    Map的常用实现类:HashMap、TreeMap、HashTable、LinkedHashMap、ConcurrentHashMap以及Properties等

    HashMap[线程不安全]

    • HashMap-uml结构图:
      UeFbuR.png

    • 线程不安全主要体现在下面两个方面:

    [1].在JDK1.7中,当并发执行扩容操作时会造成环形链和数据丢失的情况
    [2].在JDK1.8中,在并发执行put操作时会发生数据覆盖的情况

    • HashMap的扩容条件:

    HashMap有扩容机制,就是当达到扩容条件时会进行扩容:
    [1].当HashMap中的元素个数(size)超过临界值(threshold)时就会自动扩容。
    [2].在HashMap中,threshold = loadFactor * capacity

    TreeMap

    • TreeMap-uml结构图:
      UeEnns.png

    HashTable

    • HashTable-uml结构图:
      UeEQA0.png

    ConcurrentHashMap[线程安全]

    • ConcurrentHashMap-uml结构图:
      UekV58.png

    Properties

    • Properties-uml结构图:
      UeVir9.png

    Iterator容器

    UAi5WR.png
    版权声明:本文为博主原创文章,遵循相关版权协议,如若转载或者分享请附上原文出处链接和链接来源。

  • 相关阅读:
    APP手工测试01-app专项测试要点-测试、开发环境-敏捷开发
    APP测试面试题(一)
    软件测试面试题-网站
    APP 抓包-fiddler
    使用模板快速编写测试用例
    随机数据构造-Faker
    [转载]大规模爬虫流程总结,经验总结
    python高级知识点总结
    python sorted,sort,reversed,reverse函数
    python函数式编程
  • 原文地址:https://www.cnblogs.com/mazhilin/p/13619291.html
Copyright © 2020-2023  润新知