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。


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

JAVA基础之——数据结构的更多相关文章

  1. Java基础-JAVA中常见的数据结构介绍

    Java基础-JAVA中常见的数据结构介绍 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是数据结构 答:数据结构是指数据存储的组织方式.大致上分为线性表.栈(Stack) ...

  2. [Java面经]干货整理, Java面试题(覆盖Java基础,Java高级,JavaEE,数据库,设计模式等)

    如若转载请注明出处: http://www.cnblogs.com/wang-meng/p/5898837.html   谢谢.上一篇发了一个找工作的面经, 找工作不宜, 希望这一篇的内容能够帮助到大 ...

  3. Java基础知识【上】(转载)

    http://blog.csdn.net/silentbalanceyh/article/details/4608272 (最终还是决定重新写一份Java基础相关的内容,原来因为在写这一个章节的时候没 ...

  4. 万能的林萧说:一篇文章教会你,如何做到招聘要求中的“要有扎实的Java基础”。

    来历 本文来自于一次和群里猿友的交流,具体的情况且听LZ慢慢道来. 一日,LZ在群里发话,"招人啦." 然某群友曰,"群主,俺想去." LZ回之,"你 ...

  5. Java基础应用

    Java集合类解析 List.Map.Set三个接口,存取元素时,各有什么特点? List 以特定次序来持有元素,可有重复元素.Set 无法拥有重复元素,内部排序.Map 保存key-value值,v ...

  6. Java基础常见英语词汇

    Java基础常见英语词汇(共70个) ['ɔbdʒekt] ['ɔ:rientid]导向的                             ['prəʊɡræmɪŋ]编程 OO: object ...

  7. java基础3.0:Java常用API

    本篇介绍Java基础中常用API使用,当然只是简单介绍,围绕重要知识点引入,巩固开发知识,深入了解每个API的使用,查看JavaAPI文档是必不可少的. 一.java.lang包下的API Java常 ...

  8. 黑马程序员----java基础笔记中(毕向东)

    <p>------<a href="http://www.itheima.com" target="blank">Java培训.Andr ...

  9. Java基础知识点

    以下10点为JAVA 基础知识,后面将足以总结和完善以备面试 数据类型 (包装类,字符串,数组) 异常处理 Java IO和NIO 数据结构 (集合和容器 ) 多线程(并发) 网络通信(协议) 面向对 ...

随机推荐

  1. Using RDP to connect Windows remote desktop with Linux

    安装rdesktop(一般情况下不需要这么做): sudo apt-get install rdesktop 执行连接: rdesktop xxx.xxx.xxx.xxx:3389 -u admini ...

  2. RHEL配置本地yum

    RHEL(即Red Hat Enterprise Linux的缩写)配置本地yum 提前将 rhel-server-6.7-x86_64-dvd.iso 文件上传到服务器上 1.在根目录创建文件夹/m ...

  3. Java最常见的200+面试题及自己梳理的答案--面试必备(一)

    昨天在今日头条上看到一份所谓经常面别人的TL梳理的面试题,看着比较完善,但是,没有对应的答案,自己看着研究学习了下,顺带梳理下答案.主要包括以下模块:Java基础.容器.多线程.反射.对象拷贝.Jav ...

  4. 【JavaScript】动态原型模式创建对象 ||为何不能用字面量创建原型对象?

    var proto = ""; function Person(name, age, job) { this.name = name; this.age = age; this.j ...

  5. FlowPortal-BPM——数据库交互:创建新接口(类库)—将数据提交给其他程序使用

    使用到的是“流程设计”→“自定义插件” 一.创建新类库 (1)新建类库→引用文件 (2)新建ado.net数据访问类(要操作的数据库) (3)右键类库名称→属性→生成→输出→路径:安装目录下UserD ...

  6. kafka补充

     

  7. CentOS 7 安装过程中设置网络

    如果在安装过程中需要使用网络,需要启动网卡,默认是DHCP 点击configure进入设置 General 常规设置 Automatically connect to this network whe ...

  8. 【Alpha】Phylab 发布说明

    Phylab Alpha阶段发布说明 一.发布地址 Phylab 二.新功能 1. 控制台 由于往届项目控制台并未发布,因此我们在完善后将这部分放在新功能部分.目前使用控制台需要向开发者申请. 1.1 ...

  9. The Annoying Bug

    log里看不出问题,直接客户端就disconnected. gdb 挂了也不会停住,继续跑得跟正常人似的 再连根本不正常的了. 硬件: a , 主板CPU更换过 b,USB3.0 软件: 无有更换,但 ...

  10. [转] etcd 搭建与使用

    [From] https://blog.csdn.net/ShouTouDeXingFu/article/details/81167302 etcd 1.下载etcd二进制文件包         ht ...