常见的数据结构

线性表(list)

1、有序列表,就像小朋友排队(一队)放学出校门,插入的顺序作为遍历的顺序,位置不变(长度固定)

  2、顺序存储:从起始位置开始依次向后存储,查询方便,但是插入(排队加塞)和删除(排队晕倒)的效率较低,位置可变(长度可变)

  3、链式存储(链表):哪里有空位就往哪里存,通过地址“链”起来,查询麻烦(移动指针寻址),但是插入和删除非常高效

散列表

Hash table(散列表,也叫哈希表)是根据关键码值(Key-value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。(目录+链表,就像字典)

树(平衡二叉树)

二叉树是每个结点最多有两个子树的有序树。这两个子树有左右之分,分别称之为:“左子树”(left subtree)和“右子树”(right subtree)。

平衡二叉树指的是根节点左右两个子树的高度差不超过1,即左右几乎对称 。左子树上所有节点的值均小于或等于它的根节点的值,右子树上所有节点的值均大于或等于它的根节点的值。

Java集合框架

java集合框架分为二大派别 Collection和Map

collection又分为List(有序的可重复的【集合内容可以一样 并且 插入和查询一致】)和Set(无序的 唯一的【集合内容不能一样 并且插入和查询位置不一定一致】)

List 有 Vector、ArrayList、LinkedList  先看看这三个的区别

Vector  特点:有序的动态的可变的(集合的长度可变的查询和插入的顺序是一致的)数据是可重复的  线程相对安全(多线程里) 数据结构属于顺序存储    性能:增加和删除效率低(增加和删除的时候整个下标都会移动所以效率低) 但是查询效率高

ArrayList 特点:有序的动态的可变的(集合的长度可变的查询和插入的顺序是一致的)数据是可重复的  线程不保证安全  数据结构属于顺序存储    性能:增加和删除效率低(增加和删除的时候整个下标都会移动所以效率低) 但是查询效率高

LinkedList 特点:有序的动态的可变的(集合的长度可变的查询和插入的顺序是一致的)数据是可重复的  线程不保证安全  数据结构属于链表(也就是见缝插针)    性能:增加和删除效率高(存数据的时候哪有位置就放哪效率高) 但是查询效率低

java的数据结构的更多相关文章

  1. java项目——数据结构实验报告

    java项目——数据结构总结报告 20135315  宋宸宁 实验要求 1.用java语言实现数据结构中的线性表.哈希表.树.图.队列.堆栈.排序查找算法的类. 2.设计集合框架,使用泛型实现各类. ...

  2. JAVA常用数据结构及原理分析

    JAVA常用数据结构及原理分析 http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balaba ...

  3. (6)Java数据结构-- 转:JAVA常用数据结构及原理分析

    JAVA常用数据结构及原理分析  http://www.2cto.com/kf/201506/412305.html 前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balab ...

  4. 【转】Java学习---Java核心数据结构(List,Map,Set)使用技巧与优化

    [原文]https://www.toutiao.com/i6594587397101453827/ Java核心数据结构(List,Map,Set)使用技巧与优化 JDK提供了一组主要的数据结构实现, ...

  5. 【转载】图解Java常用数据结构(一)

    图解Java常用数据结构(一)  作者:大道方圆 原文:https://www.cnblogs.com/xdecode/p/9321848.html 最近在整理数据结构方面的知识, 系统化看了下Jav ...

  6. java实现 数据结构:链表、 栈、 队列、优先级队列、哈希表

    java实现 数据结构:链表. 栈. 队列.优先级队列.哈希表   数据结构javavector工作importlist 最近在准备找工作的事情,就复习了一下java.翻了一下书和网上的教材,发现虽然 ...

  7. Java同步数据结构之ConcurrentSkipListMap/ConcurrentSkipListSet

    引言 上一篇Java同步数据结构之Map概述及ConcurrentSkipListMap原理已经将ConcurrentSkipListMap的原理大致搞清楚了,它是一种有序的能够实现高效插入,删除,更 ...

  8. java之数据结构之链表及包装类、包

    链表是java中的一种常见的基础数据结构,是一种线性表,但是不会按线性的顺序存储数据,而是在每一个节点里存到下一个节点的指针.与线性对应的一种算法是递归算法:递归算法是一种直接或间接的调用自身算法的过 ...

  9. java核心数据结构总结

    JDK提供了一组主要的数据结构的实现,如List.Set.Map等常用结构,这些结构都继承自java.util.collection接口. List接口 List有三种不同的实现,ArrayList和 ...

  10. 关于Java的数据结构HashMap,ArrayList的使用总结及使用场景和原理分析

    使用,必须要知道其原理,在课堂上学过散列函数的用法及其原理.但一直不知道怎么实践. 后来,在实际项目中,需要做一个流量分析预处理程序.每5分钟会接收到现网抓来的数据包并解析,每个文本文件大概200M左 ...

随机推荐

  1. faster-rcnn 结构杂谈

    faster-rcnn结构图: (只截取了最难理解的部分) 这个网络看似很复杂,但是理解了其中关键的层,就基本可以掌握这个结构了.要看源码!!要看源码!!要看源码 !!重要的事情说三遍. 关键的层: ...

  2. es6对象字面量增强

    相对于ES5,ES6的对象字面量得到了很大程度的增强.这些改进我们可以输入更少的代码同时语法更易于理解.那就一起来看看对象增强的功能.对象字面量简写(Object Literal Shorthand) ...

  3. 常用Mysql数据库操作语句

    用户管理: 1.新建用户: 语法msyql>CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明: username - 你将创建 ...

  4. AngularJS1.X学习笔记8-自定义指令(上)

    AngulaJS的指令是一种非常强大的特性,一个ng-repeat就能让我们非常方便的展示一个数据列表,指令相当于是一个组件,为我们将一些东西封装起来了,提供了复用的可能性.个人认为自定义指令还是比较 ...

  5. VMware-vCenter-Server-Appliance VCSA升级步骤

    1.下载ZIP升级文件并解压 2.打开HFS,把解压后的文件夹拖到"Virtual File System"下,在弹出的对话框中点击"Virtual folder&quo ...

  6. Python Tornado初学笔记之表单与模板(一)

    Tornado中的表单和HTML5中的表单具有相同的用途,同样是用于内容的填写.只是不同的是Tornado中的表单需要传入到后台,然后通过后台进行对模板填充. 模板:是一个允许嵌入Python代码片段 ...

  7. api-gateway实践(14)前端签名密钥和后端签名密钥

    1.前端签名密钥 1.1.缓存管理初始:engine初始的时候,从redis拉取全部前端绑定关系到engine缓存.新增/绑定:绑定签名密钥和服务实例,同时缓存该关系到redis,同时缓存到engin ...

  8. OrientDB入门(1)Getting Started

    Running OrientDB the First Time First, download and extract OrientDB by selecting the appropriate pa ...

  9. Python之函数基础

    1.函数的定义与调用 函数从大方针上考虑总共分为两种:一种是内置函数,另一种是自定义函数.今天主要讲的是自定义函数. s = '金老板小护士' #len(s) def my_len(): #自定义函数 ...

  10. django知识回顾

    一.web框架 1.web框架本质 众所周知,对于所有的web应用,本质上其实就是一个socket服务端,用户的浏览器其实就是一个socket客户端 1.浏览器(socket客户端) 2.发送IP和端 ...