精华内容
下载资源
问答
  • java数据结构和算法(第二)

    千次下载 热门讨论 2012-11-29 21:12:37
    Java数据结构的类库 小结 问题 第2章数组 Array专题Applet Java中数组的基础知识 将程序划分成类 类接口 Ordered专题applet 有序数组的Java代码 对数 存储对象 大O表示法 为什么不用数组表示一切? 小结 问题 实验 ...
  • Java数据结构和算法(一)——开篇

    万次阅读 多人点赞 2014-09-15 07:03:40
    看的是——《Java数据结构和算法》一书,作者Robert Lafore。 目录 1)数据结构算法有什么用? 2)技术与通俗 3)驱动力学习 1)数据结构算法有什么用? 当你用着java里面的容器类很爽的时候,你有没有想过,怎么...

    这篇文章里面不讲技术,抽空讲讲技术和通俗之间有一种奇特的关系,还有驱动力学习的东西。看的是——《Java数据结构和算法》一书,作者Robert Lafore。

    目录

    1)数据结构算法有什么用?

    2)技术与通俗

    3)驱动力学习


    1)数据结构算法有什么用?

    当你用着java里面的容器类很爽的时候,你有没有想过,怎么ArrayList就像一个无限扩充的数组,也好像链表之类的。好用吗?好用,这就是数据结构的用处,只不过你在不知不觉中使用了。

     

    校招会发现大公司考的就是这类的题目,刚开始不会考你java的线程,容器,多态什么的特性,考的就是你的基础,你的这些基础扎实,学其他不是问题。

     

    正如作者所说,用于现实世界的存储,我们使用的工具和建模。每种数据结构有自己的优点和缺点,想想如果Google的数据用的是数组的存储,我们还能方便地查询到所需要的数据吗。

    而算法,在这么多的数据中如何做到最快的插入,查找,删除,也是在追求更快。

     

    第一章也把数据库,面向对象,软件工程(原来整个软件工程项目的生命周期包括分析、设计、验证编码、测试、生产和维护几个阶段)讲了个大概

     

     

     

    2)技术与通俗

    大学里面那本严蔚敏的数据结构不厚,内容丰富,但是复杂问题的讲解方面篇幅这样就少了,比较难理解,c也不是很擅长,但是基本的思路还是有的。

    简单的链表,数组,堆栈,队列,图,几个排序算法。

     

    后面看到知乎涛吴的回答,当时很震撼,这里引用一下他的回答:

     

    如果说 Java 是自动档轿车,C 就是手动档吉普。数据结构呢?是变速箱的工作原理。你完全可以不知道变速箱怎样工作,就把自动档的车子从 A 开到 B,而且未必就比懂得的人慢。写程序这件事,和开车一样,经验可以起到很大作用,但如果你不知道底层是怎么工作的,就永远只能开车,既不会修车,也不能造车。如果你对这两件事都不感兴趣也就罢了,数据结构懂得用就好。但若你此生在编程领域还有点更高的追求,数据结构是绕不开的课题。

    Java 替你做了太多事情,那么多动不动还支持范型的容器类,加上垃圾收集,会让你觉得编程很容易。但你有没有想过,那些容器类是怎么来的,以及它存在的意义是什么?最粗浅的,比如 ArrayList 这个类,你想过它的存在是多么大的福利吗——一个可以随机访问、自动增加容量的数组,这种东西 C 是没有的,要自己实现。但是,具体怎么实现呢?如果你对这种问题感兴趣,那数据结构是一定要看的。甚至,面向对象编程范式本身,就是个数据结构问题:怎么才能把数据和操作数据的方法封装到一起,来造出 class / prototype 这种东西?

    此外,很重要的一点是,数据结构也是通向各种实用算法的基石,所以学习数据结构都是提升内力的事情。

     

    反正我有醍醐灌顶的感觉,好比说,我有在编程上更厉害的追求,怎么能死在数据结构上的感觉。

     

    其实要将一门难懂的技术通俗地讲给不懂的人听,需要很大的功力,包括之前我写的那篇《C与指针》刚开始的时候,那个C语言有什么用回答也是他写的,我很佩服这样的人。

     

    所以当你能把一件东西清楚的讲解给别人听,类似前几篇文章提到的橡皮鸭调试法一样,你搞懂了,摸清楚了。跟一个技术人士用技术的语言讲解,非专业人士通俗语言讲解。

     

    当然了,前提需要积累。具体可以参见一下CSDN里面关于罗升阳的访谈——

    专访罗升阳:老罗的Android之旅

    当时吓了我一跳,之前以为和那个老罗同个级别的年龄,后面发现好年轻的小伙子,积累,慢慢积累。

     

     

    3)驱动力学习

    当你看到你自己玩过的马里奥可以自己写出来的时候是不是心动了?顿时学习的驱动力是不是有了——我要做一个这样的东西出来,然后开始学,直到自己动手完成。

     

    当时我在大学里就在推算,按照我这个学习速度,10年之后那也可以牛逼哄哄啊。有些人为什么技术没有提升,几年之后还是那样,因为驱动力的东西,有段时间我曾经停下来过,Java的差不多都学完了,干什么?

     

    因为从J2SE到EE的东西,大体的看完做过,然后就有一段迷茫期了,驱动力也没有了。后面意识到自己太肤浅了,还有其他一些热门的框架没用,最好的单例你写出来了吗,虚拟机你深入了吗,Java还有很多经典书籍没看呢?

    以学习新知识为驱动力也是可以的,期间不停地学到新知识是很有成就感和很兴奋的东西——原来是这样xx。

     

    还有一种——目标驱动,当时要做一个网络相关的东西——想到了爬虫,然后以做出这东西为目的,收集资料,看别人的代码,这样的驱动力学习也是可以的。工作的时候,如果目标只放在工作的项目,每次的项目都有新的东西在里面,那是可以学到东西的,一成不变的话,只能自己去发掘了。

    不然哪有那个学习到半夜的——专访雷果国:从1.5K到18K 一个程序员的5年成长之路。

     

    我要学Python,学了之后会发现,原来真的很牛逼,可以尝试用Python写个爬虫,GoAgent之类的。这便是进步。

     

     

    扯了那么多,就是不希望自己只懂的用Java做xx系统,只懂得用容器而永远不知道里面是怎样的。这些作为根基的懂了,其他也好学。

     

    说回数据结构这个,为什么很多学生听课听得想睡,xx链表,双向链表,我排序都有N种,学生的想法是这不知道有什么用,你讲链表给我,我把它实现一次,完事。

     

    但当你生活中的编程问题需要解决的时候,你会发现到处都是数据结构的使用,像基金买入买出不是队列吗,先进先出;像简单的一个班级学生的数据保存,用个数组不就可以解决了吗;再复杂的游戏路线问题,这不是图的问题吗;Java里面有Tree这字的,其实不也是用到树的原理吗?

     

    种种下来,你会发现,原来现实问题和语言里面的封装,都是和这些有联系的,每当你学会一种,就会恍然大悟,这不就是当年西湖河畔的夏雨荷,就是这种感觉。而学生在没有想过这些问题和没真正去使用这些语言的封装类之前,是不会考虑到上面所说的东西的。

     

    所以,一大群学生趴在那里睡觉玩手机是正常的。

     

    后面自己意识到之后,马上去买了《Java数据结构和算法》,补回之前没学和没弄懂的。

     

    不想学好基础的程序员不是好的程序员。

    展开全文
  • Java 数据结构

    千次阅读 2016-11-17 09:29:05
    Java 数据结构 Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类: 枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表...

    Java 数据结构

    Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:

    • 枚举(Enumeration)
    • 位集合(BitSet)
    • 向量(Vector)
    • 栈(Stack)
    • 字典(Dictionary)
    • 哈希表(Hashtable)
    • 属性(Properties)

    以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection),我们后面再讨论。


    枚举(Enumeration)

    枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。 枚举(The Enumeration)接口定义了一种从数据结构中取回连续元素的方式。

    例如,枚举定义了一个叫nextElement 的方法,该方法用来得到一个包含多元素的数据结构的下一个元素。

    关于枚举接口的更多信息,请参见枚举(Enumeration)


    位集合(BitSet)

    位集合类实现了一组可以单独设置和清除的位或标志。

    该类在处理一组布尔值的时候非常有用,你只需要给每个值赋值一"位",然后对位进行适当的设置或清除,就可以对布尔值进行操作了。

    关于该类的更多信息,请参见位集合(BitSet)


    向量(Vector)

    向量(Vector)类和传统数组非常相似,但是Vector的大小能根据需要动态的变化。

    和数组一样,Vector对象的元素也能通过索引访问。

    使用Vector类最主要的好处就是在创建对象的时候不必给对象指定大小,它的大小会根据需要动态的变化。

    关于该类的更多信息,请参见向量(Vector)


    栈(Stack)

    栈(Stack)实现了一个后进先出(LIFO)的数据结构。

    你可以把栈理解为对象的垂直分布的栈,当你添加一个新元素时,就将新元素放在其他元素的顶部。

    当你从栈中取元素的时候,就从栈顶取一个元素。换句话说,最后进栈的元素最先被取出。

    关于该类的更多信息,请参见栈(Stack)


    字典(Dictionary)

    字典(Dictionary) 类是一个抽象类,它定义了键映射到值的数据结构。

    当你想要通过特定的键而不是整数索引来访问数据的时候,这时候应该使用Dictionary。

    由于Dictionary类是抽象类,所以它只提供了键映射到值的数据结构,而没有提供特定的实现。

    关于该类的更多信息,请参见字典( Dictionary)


    哈希表(Hashtable)

    Hashtable类提供了一种在用户定义键结构的基础上来组织数据的手段。

    例如,在地址列表的哈希表中,你可以根据邮政编码作为键来存储和排序数据,而不是通过人名。

    哈希表键的具体含义完全取决于哈希表的使用情景和它包含的数据。

    关于该类的更多信息,请参见哈希表(HashTable)


    属性(Properties)

    Properties 继承于 Hashtable.Properties 类表示了一个持久的属性集.属性列表中每个键及其对应值都是一个字符串。

    Properties 类被许多Java类使用。例如,在获取环境变量时它就作为System.getProperties()方法的返回值。

    关于该类的更多信息,请参见属性(Properties)

    展开全文
  • Java——数据结构之顺序表

    千次阅读 多人点赞 2021-04-26 22:10:54
    Java——数据结构之顺序表   在之前的学习中,我们主要了解了很多 Java 的 基本语法,但是 在之后的 Java学习中,了解 基础 数据结构的知识 非常重要,数据结构的思想 可以帮助我们更加清晰 明白的了解 Java 的...

    Java——数据结构之顺序表


    本次内容介绍大纲

    在这里插入图片描述


      在之前的学习中,我们主要了解了很多 Java 的 基本语法,但是 在之后的 Java学习中,了解 基础 数据结构的知识 非常重要,数据结构的思想 可以帮助我们更加清晰 明白的了解 Java 的解题思路等等。


      今天我们就来开始学习 实现一个 Java 基础的 顺序表。


    1.顺序表的简单了解


      顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。


      顺序表一般可以分为:


      静态顺序表:使用定长数组存储。

      动态顺序表:使用动态开辟的数组存储。

      静态顺序表适用于确定知道需要存多少数据的场景.

      静态顺序表的定长数组导致N定大了,空间开多了浪费,开少了不够用.
    相比之下动态顺序表更灵活, 根据需要动态的分配空间大小.


    2.接口的实现


      今天我们就来实现一个动态顺序表. 以下是需要支持的接口.


    在这里插入图片描述


      接下来,我们将需要实现的方法一 一具体来实现。


    (1)创建初始变量


    在这里插入图片描述

      首先我们创建一个 myArraylist 的类,初始我们创建 整形数组 int [ ] elem 、有效长度变量 int usedSize , 并且写一个构造方法,在方法的内部为数组定义大小 ,为数组开辟空间。


    (2)打印顺序表


    在这里插入图片描述


    用 for 循环 将数组中的元素 一一遍历,打印每一个元素。


    (3)添加元素


    在这里插入图片描述

    这个方法的实现步骤:

    1.考虑 传入的数组下标 pos 的值 是否合法

    2.如果pos 合法,进行添加元素操作。

    3.考虑数组 满容的情况,用拷贝的方式为数组进行增容。


    (4)判断是否包含元素


    在这里插入图片描述


      如果我们要找的 toFind 在数组中找到,则返回 true ,如果没有找到的话,则返回 false。


    (5)查找元素的下标


    在这里插入图片描述

      遍历数组,如果找到我们所查找的 toFind ,则返回数组的下标。如果找不到的话,则返回 -1。


    (6)获取 pos 位置的元素


    在这里插入图片描述


      如果 pos 合法的话 ,返回 数组中下标为 pos 的元素值。


    (7)更新pos 位置的元素值


    在这里插入图片描述


      还是先判断 pos 是否合法,合法的情况下,将 value的值 传给 下标为 pos的元素,从而进行更改元素值。


    (8)删除元素


    在这里插入图片描述


    删除方法实现的步骤:


    1.用 search 方法找到 传入关键字的下标 index,如果在数组中找不到的话,直接return。

    2.利用 i 和 useSize 的关系,将从 i = index 开始,将下标 i+1 的元素 赋给 i , i++ .

    3.删去一个元素,有效数组 usedSize - -。


    (9)获取顺序表长度


    在这里插入图片描述

    返回代表有效长度 的值 usedSize 。


    (10)清空顺序表


    在这里插入图片描述


    清空顺序表 ,我们就通过将 有效长度置为 0 来清空数组。


    3.完整顺序表的实现


    在这里插入图片描述




      好了今天的知识就分享到这里,希望大家多多练习,谢谢大家的欣赏与关注!!




    感谢支持!!!




    完!

    展开全文
  • Java基本数据结构

    千次阅读 2019-03-06 21:47:51
    数据结构: 线性表: 最常用的、最简单的数据结构,它是n个数据元素的有限序列、 实现线性表:输出存储线性表元素,即是用一组连续的存储单元,依次存储线性表数据元素,另一种是使用链表存储线性表元素,用一组...

    数据结构:

    • 线性表:

    最常用的、最简单的数据结构,它是n个数据元素的有限序列、

    实现线性表:输出存储线性表元素,即是用一组连续的存储单元,依次存储线性表数据元素,另一种是使用链表存储线性表元素,用一组任意的存储单元存储线性表的数据元素(存储单元可以连续,可以不连续)。

    先进后出

    • 队列

    一段添加元素。另一端取出元素。入队出队。使用场景:因为队列先进先出的特点,在多线程阻塞队列管理中非常适用。

    • 链表

    物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表的指针地址实现,每个元素包含两个节点,一个是存储元素的数据域(存储空间),另外一个是指向下一个节点的指针域。根据指针的指向,链表形成不同的结构,例如单链表、双链表,循环链表

    链表优点:不需要初始化容量,可以任意加减元素,添加或删除元素只需要改变前后两个元素节点的指针域指向地址即可,所以添加,删除很快

    缺点:含有大量指针域,占用空间大,需要查找元素需要遍历链表来查找,比较耗时。

    使用场景:数据量小,需要频繁增加,删除的操作。

    一种数据结构,由n(n>=1)个有限节点组成的具有层级关系的集合。它看起来像倒挂的树,根朝上,叶朝下,具有以下特点:

    每个节点有零个或多个子节点

    没有父节点的节点是根节点

    每一个非根节有且只有一个父节点

    除了根节点,没格子节点可以分为多个不想交的子树。

    二叉树,是树中特殊的一种:

    每个节点最多有两颗子树,节点的度最多为2

    左子树和右子树是有顺序的,次序不能颠倒。

    即使某个节点只有一个子树,也要区分左右子树。

    二叉树是折中的方案,添加删除元素很快,在查找方面也有自己的算法优化,所以二叉树基友链表的好处,也有数组的好处,是两者的优化方法,在处理大批量动态数据方面非常有用。

    拓展:平衡二叉树、红黑树。B+树等。这些数据结构二叉树的基础上衍生了很多功能,在实际应用中广泛用到,例如Mysql索引结构用的是B+树,还有HashMap底层源码是红黑树

    Collection接口和Map接口区别:

    Collection(源自于java.util.Collection)和Map是java集合框架中两个基本的集合类型,要区别不统集合,首先要从Collection和Map开始。Collection接口是传统的集合接口,可以把单个对象存储起来,而Map接口是映射接口,存储的是键值对。

    Collection

    List

    Set

    LinkList

    ArrayList

    Vector

    HashSet

    TreeSet

    LinkedHashSet

               

    Map

     

    HashMap

    HashTable

    LinkedHashMap

    TreeMap

           

     

     

     

     

    List(interface)是一种链表, 有序可重复 List可以通过index指导元素的位置,允许重复元素,ArrayList(允许所有元素包括null)   

     

    LinkedList(双向链表结构) 

     Vector可以实现List接口。类似于ArrayList,但是Vector是同步的,由Vector创建的Iterator,虽然和ArrayList是同一接口,但是因为Vector是同步的,当一个Iterator(迭代器)被创建而且正在被使用时,另一个线程改变了Vector的状态(例如删除一些元素),这时调用Iterator方法将抛出ConcurrentModificationException(同事发生),因此异常必须捕获。

     

    Vector是线程安全的,因为Vector好多方法是sychornized关键字修饰的,比如addElement方法:

    Public syschronized void addElement(E obj){

          modCount++;

    ensureCapatityHelper(elementCount+1);

    elementData[elementCount++]=obj;

    }

    这样在多线程并发访问Vector实例的时候,保证某一刻最多只有一个线程调用Vector中被syschornized修饰的方法。

    反观List,在ArrayList中的add方法:

    Public Boolean add(E e){

          ensureCapacityInternal (size+1);

          elementData[size++]=e;

          reture true;

    }

    有可能同一时候有一个以上线程访问该方法。

    我们知道size++运算过程不是原子操作,有可能被中断。那么如果在size++过程中被中断,而另外一个线程恰好执行了一次这样的方法,就会造成脏数据产生。

    拓展:什么是原子操作?

    原子操作(atomic operation)是不需要syschronized(同步),这是多线程编程老生常谈了,所谓原子操作指的是·不会被线程调度机制打断的操作,这样操作一开始,就一直运行,一直运行到结束,中间不会有任何context switch 切换到另外一个线程。通常所说的原子操作包括对非long和double型的primitive进行赋值,以及返回这两者之外的primitive。之所以要把它们排除在外是因为它们都比较大,而JVM的设计规范又没有要求读操作和赋值操作必须是原子操作(JVM可以试着去这么作,但并不保证)。

    如果这个操作所处的层(layer)的更高层不能发现其内部实现与结构,这个操作就是原子操作。

    原子操作可以是个步骤,也可以是多个不走,但是其顺序不可以被打乱,也不能被切割,只执行其中一部分。将整个操作作为一个整体是原子性的核心特征。

    在单处理器系统中,能够在单条指令中完成的操作就可以认为原子操作,因为中断只能发生在指令之间,这也是CPU指令系统引入的test_and_set  / test_and clear等指令用于临界资源互斥的原因,但是在对称多处理器(Symmetric Multi-Processor)结构中就不同了,由于系统有多个处理器在独立运行,即使在单条指令中完成操作也有可能受到干扰。

     

     

    如果你代码进程中有多个进程在同时进行,而这些线程可能同时会同时运行这段代码,如果运行结果和单线程运行的结果是一样的,而且其他的变量也和预期值一样,是线程安全的。

    或者说:一个类或者程序所提供的接口对于线程来说是原子操作或者多个线程之间的切换不会导致该接口的执行结果存在二义性,也就是说我们不用考虑同步的问题。

    线程安全问题都是由全局变量及静态变量引起的。

    若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全局变量是线程安全的;若有多个线程同时执行写操作,一般都需要考虑线程同步,否则的话就可能影响线程安全。

    比如上例中一个 ArrayList 类,在添加一个元素的时候,它可能会有两步来完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。

    在单线程运行的情况下,如果 Size = 0,添加一个元素后,此元素在位置 0,而且 Size=1;

    而如果是在多线程情况下,比如有两个线程,线程 A 先将元素存放在位置 0。但是此时 CPU 调度线程A暂停,线程 B 得到运行的机会。线程B也向此 ArrayList 添加元素,因为此时 Size 仍然等于 0 (注意哦,我们假设的是添加一个元素是要两个步骤哦,而线程A仅仅完成了步骤1),所以线程B也将元素存放在位置0。然后线程A和线程B都继续运行,都增加 Size 的值。

    那好,我们来看看 ArrayList 的情况,元素实际上只有一个,存放在位置 0,而 Size 却等于 2。这就是“线程不安全”了

    也就是说像HashTable和Vector这样的容器实现了线程安全,是通过同步关键字实现的。

     

    此外,我们又注意到,不管是Vector还是List容器,都有可能会出现ConCurrenceModificationException的异常。这是因为几乎所有的集合类都有快速失败的(Fail-Fast)校验机制。这是为了确保集合方法一致而设立的保护措施。他的实现原理就是modCount修改计数器。如在遍历列表的时候(使用迭代器的方式),这时候会保存当前的modCount值,当每次迭代器取值的时候,会通过checkForComodification()方法来校验modCount是否发生了改变。如果发生了改变,就会抛出ConCurrenceModificationException的异常。

     

    public E next() {

                checkForComodification();

                int i = cursor;

                if (i >= size)

                    throw new NoSuchElementException();

                Object[] elementData = ArrayList.this.elementData;

                if (i >= elementData.length)

                    throw new ConcurrentModificationException();

                cursor = i + 1;

                return (E) elementData[lastRet = i];

            }

    final void checkForComodification() {

                if (modCount != expectedModCount)

                    throw new ConcurrentModificationException();

            }

     那么,即使是使用Vector仍可能会抛出这种异常,这是不是和它声称的线程安全所相悖呢?

     

    其实这里的异常和线程同步是两码事。因为使用迭代器遍历容器的时候,这是记录了modCount值,然后调用了remove方法,这在单线程中本来就是不允许的,和多线程同步没有关系。

     

    线程同步是为了实现线程安全,而在Vector中则是实现了线程的部分安全。

    线程安全性不是一个非真即假的命题。 Vector 的方法都是同步的,并且 Vector 明确地设计为在多线程环境中工作。但是它的线程安全性是有限制的,即在某些方法之间有状态依赖(类似地,如果在迭代过程中 Vector 被其他线程修改,那么由 Vector.iterator() 返回的 iterator会抛出ConcurrentModifiicationException。

     

    Set(interface)无序不可重复,HashSet,LinkedHashSet,TreeSet可以实现set接口。Set是一种不包含重复元素的Collection,即任意两个元素e1和e2都是有e1.equals(e2)=false, set最多有一个null元素。因此set的构造函数有一个约束条件,传入的Collection参数不能包含重复元素。但是必须小心操作可变对像(Mutable Object).如果一个set的可变元素改变了自身状态导致Object.equals(Object)=true将导致一些问题。

     

    Map接口:也是接口,但是没有继承collection接口,描述了从不重复的键到值的映射,键值对,

    HashMap散列表,基于哈希表实现,就是键值对的映射关系,元素顺序不固定,适合对元素插入删除定位等操作。

    TreeMap:红黑树实现,TreeMap的元素保持着某种固定的顺序,更加适合对元素的遍历。

    Iterator接口:所有实现Iterator接口方法能以迭代方式逐个访问集合中的各元素,并可以从Collection中除去适当的元素。

    Iterator it=a.iterator();

            while (it.hasNext()){

               String ob=(String)it.next();

                System.out.println(ob);

            }.

    Hsahtable类:继承Map接口,实现key-value的哈希表。HashMap几乎可以等价于Hashtable,除了HashMap是非synchronized的,并可以接受null(HashMap可以接受为null的键值(key)和值(value),而Hashtable则不行)。

          Comparable接口:可用于比较的实现,可以实现compareTo方法。Entity层实现Comparabel接口<UserBean>

    展开全文
  • java数据结构(Java)(第3)[叶核亚] 全套资料

    千次下载 热门讨论 2013-08-18 12:01:48
    java数据结构(Java)(第3)[叶核亚] 全套资料包含:[电子教案] [配套资料] [习题解答与试题库] 内容相当丰富 不收藏肯定后悔呀
  • java数据结构

    千次阅读 2020-07-20 13:48:29
    栈,队列 链表 ## 树
  • 数据结构:八大数据结构分类

    万次阅读 多人点赞 2018-09-05 18:23:28
    数据结构分类 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。 常用的数据结构有:数组,栈,链表,队列,树,图,堆,散列表等,如图所示: 每一种数据结构都...
  • Java数据结构学习

    千次阅读 2014-03-13 21:11:01
    java 数据结构学习
  • Java数据结构与算法入门

    万次阅读 多人点赞 2018-04-29 11:53:50
    第一部分:Java数据结构要理解Java数据结构,必须能清楚何为数据结构?数据结构:Data_Structure,它是储存数据的一种结构体,在此结构中储存一些数据,而这些数据之间有一定的关系。而各数据元素之间的相互关系,又...
  • 数据结构与算法(java版

    万次阅读 多人点赞 2018-04-22 17:18:08
    数据结构与算法(java版)标签: java 数据结构 算法2017年12月28日 21:50:08102人阅读 评论(0) 收藏 举报 分类:数据结构与算法转自:http://blog.csdn.net/column/details/datastructureinjava.html 目录...
  • Java基础数据结构和算法

    万次阅读 多人点赞 2016-04-22 22:46:21
    数据结构 Array数组 和C/C++以及其他语言一样,Java中的数组有差不多一样的语法。只是Java中除了8中基本类型,数组也是作为对象处理的,所以创建对象时也需要使用new关键字。和大多数编程语言一样,数组一旦创建...
  • java数据结构算法

    千人学习 2019-11-22 10:12:46
    做一门精致,全面详细的 java数据结构与算法!!! 让天下没有难学的数据结构, 让天下没有难学的算法, 不吹不黑,我们的讲师及其敬业,可以看到课程视频,课件,代码的录制撰写,都是在深夜,如此用心,其心可鉴,他不掉头发,谁...
  • java数据结构和算法

    千次阅读 多人点赞 2019-01-07 13:58:39
    Java数据结构和算法(一)——简介 Java数据结构和算法(二)——数组 Java数据结构和算法(三)——冒泡、选择、插入排序算法 Java数据结构和算法(四)——栈 Java数据结构和算法(五)——队列 Java数据结构...
  • 数据结构与算法(Java版)

    千次阅读 多人点赞 2019-03-29 15:01:47
    (1)数据结构与算法概念解析(2)数据结构之数组(3)数据结构之栈(4)数据结构之队列(5)数据结构之链表(6)数据结构之二叉树(7)数据结构之霍夫曼树(8)数据结构之AVL树(9)数据结构之2-3-4树与2-3树(10)...
  • 数据结构Java版 第四 叶和亚

    千次阅读 多人点赞 2019-04-13 16:18:39
    内容目录如下. 链接:https://pan.baidu.com/s/1qHjGaRwD-4BgBm6HEagD_g 提取码:iom1
  • 数据结构_java版

    千次阅读 热门讨论 2019-07-05 10:45:39
    文章目录1. 下载链接 1. 下载链接 https://www.cnblogs.com/coco56/p/11223189.html 在视频教程\数据结构那里。
  • Java常用数据结构总结

    万次阅读 2017-02-16 17:04:25
    数据元素相互之间的关系称为结构。有四类基本结构:集合、线性结构、树形结构、图状结构; 集合结构:除了同属于一种类型外,别无其它关系 线性结构:元素之间存在一对一关系常见类型有: 数组,链表,队列,栈,它们之间在...
  • Java数据结构及原理实现

    万次阅读 2017-07-21 16:18:03
    程序设计主要是数据结构+算法,而数据结构在面向对象思维里是“容器”的意思,数据结构主要...所以下面就简单介绍java数据结构的体系和部分原理实现java集合体系结构图集合父接口Collection,Map和集合工具类Collect
  • 线性结构和非线性结构 队列 顺序队列 循环队列 链表 链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下 小结: 1) 链表是以节点的方式来存储,是链式存储 2)每个节点包含 data 域, ...
  • JAVA常用数据结构及原理分析(面试总结)

    万次阅读 多人点赞 2017-05-21 17:27:58
    最近准备面试,因此整理一份Java中常用的数据结构资料,方便面试; java.util包中三个重要的接口及特点:List(列表)、Set(保证集合中元素唯一)、Map(维护多个key-value键值对,保证key唯一)。其不同子类的...
  • 图解Java数据结构和算法

    万人学习 2019-06-21 10:09:16
    教程内容:本教程是使用Java来讲解数据结构和算法,考虑到数据结构和算法较难,授课采用图解加算法游戏的方式。内容包括: 稀疏数组、单向队列、环形队列、单向链表、双向链表、环形链表、约瑟夫问题、栈、前缀、中缀...
  • Java 面试之数据结构

    万次阅读 多人点赞 2018-08-28 15:09:07
    常见数据结构 HashMap、Hashtable、 ConcurrentHashMap HashMap 底层实现:HashMap底层整体结构是一个数组,数组中的每个元素又是一个链表。每次添加一个对象(put)时会产生一个链表对象(Object类型),...
  • JAVA常用数据结构及原理分析

    千次阅读 2015-06-26 23:30:54
    前不久面试官让我说一下怎么理解java数据结构框架,之前也看过部分源码,balabala讲了一堆,现在总结一下。java.util包中三个重要的接口及特点:List(列表)、Set(保证集合中元素唯一)、Map(维护多个key-value...
  • java数据结构之数组

    千次阅读 2019-02-09 10:44:02
    数据结构对我们的程序员也是非常重要的,相当于一个基础学科,从今天开始,咱们再重新学习一下数据结构吧 1,首先我们要定义一下泛型,初始化成员变量,声明构造方法。 private T data[]; private int size; ...
  • Java实现数据结构的可视化工具

    千次阅读 2019-08-15 16:48:46
    借助可视化工具可以更好的理解数据结构和算法,这里推荐两个比较不错的数据结构和算法的可视化网站: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html https://visualgo.net/zh 除此数据结构...
  • java数据结构与算法的基础总结

    千次阅读 2017-10-09 11:03:30
    Java数据结构与算法之学习路线 最全的数据结构解析与归纳数据结构首先,要清楚数据结构的概念:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 我们在...
  • java数据结构——抽象数据类型

    千次阅读 2019-02-18 12:24:51
    数据得抽象是用抽象数据类型来实现的,ADT是这个集合和定义在这集合上的一组数据操作,它不包括计算机数据存储:隐藏了数据存储结构并且不涉及实现结构数据类型。 java中抽象数据类型的描述:1.抽象类...
  • Matlab使用Java数据结构类型

    千次阅读 2015-11-03 20:45:10
    Matlab使用Java数据结构类型 Matlab 2008b才开始引入containers.Map,这是Matlab唯一的数据结构(这里的数据结构是指自带一定逻辑性的数据结构,不包括普通数据类型)。如果要有其它,比如Queue、Set等...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,382,630
精华内容 553,052
关键字:

java版数据结构

java 订阅
数据结构 订阅