zoukankan      html  css  js  c++  java
  • JAVA基础之——数据结构

    JAVA数据结构有8种,如下所示,本文从使用场景,优缺点方面讲解。

    1 数组Array

      ArrayList 使用场景:有序的存储同一类型数据的集合,固定大小

      优点:通过索引查找方便

      缺点:插入或删除一个值时,改变值之后的索引都需要更新,故操作复杂;其次,由于大小固定,造成了设置过大内存浪费,设置过小又不能满足存储要求。

    2 栈stack

      使用场景:限定仅在表尾进行插入或是删除的线性表,先进后出

    3 队列queue

      Queue包路径java.util.Queue,表头删除,表尾添加,先进先出。是一个接口,父类Collection,常用方法有

      add  offer  remove  poll  element  peek

    4 链表list

      使用场景:存储可变空间的非连续非顺序的一类数据。

      缺点:访问时或是插入删除链表中间值,需要遍历链表,耗时多。

      ArrayList包路径java.util.ArrayList,默认初始容量10,采用数组形式保存数据。

      缺点:每插入一条数据,需要更新插入点以及之后的所有数据的索引号,以及计算大小。

      LinkedList将对象保存在独立的内存空间中,同时每个空间还保存下一个链接的索引。

      使用场景:批量随机插入或删除数据。

      缺点:由于查找需要从第一个索引开始,故查找效率低;由于每个节点存储了两个引用,故内存占用大

    5 树tree

    6 堆heap

    7 图graph

    8 散列表hash

      使用场景:根据关键码值进行访问的数据结构。

      HashMap包路径java.util.HashMap,线程非安全,存储时没使用锁。默认初始容量16,加载因子0.75,每一个存入的对象都有一个特定的哈希值。碰撞问题:^_^不同的对象计算出来的index相同,单向链表解决碰撞问题,加入一个next记录一个节点。

      扩容:当存储数据超过存储比率时,数组变长2倍成一个新数组,原数组中的值迁移到新数组中。数组中元素的位置重新存放一次。红黑树

      主要参数,数据结构,计算规则,存取过程

    Hashtable

    HashSet

      ConcurrentHashMap包路径java.util.concurrent。线程安全,引入了分段锁,为并发hashmap,默认容量16,加载因子0.75,默认并发数16,即最多同时有16条线程操作这个map。


    如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!

  • 相关阅读:
    变量的创建和初始化
    HDU 1114 Piggy-Bank (dp)
    HDU 1421 搬寝室 (dp)
    HDU 2059 龟兔赛跑 (dp)
    HDU 2571 命运 (dp)
    HDU 1574 RP问题 (dp)
    HDU 2577 How to Type (字符串处理)
    HDU 1422 重温世界杯 (dp)
    HDU 2191 珍惜现在,感恩生活 (dp)
    HH实习 acm算法部 1689
  • 原文地址:https://www.cnblogs.com/guobm/p/9791537.html
Copyright © 2011-2022 走看看