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。


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

  • 相关阅读:
    课时15.DTD文档声明下(了解)
    Python-01 学习第一节
    常用数据库备份还原命令
    Oracle排除记录集
    存储过程分页语句
    TFS统计编码行数语句
    数据库所有表替换所有列的特定字符串
    MSSQL查询所有数据库表,指定数据库的字段、索引
    统计整个库所有表的记录数
    执​行​o​r​a​c​l​e​函​数​的​四​种​方​法
  • 原文地址:https://www.cnblogs.com/guobm/p/9791537.html
Copyright © 2011-2022 走看看