精华内容
下载资源
问答
  • 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数据结构和算法(一)——开篇

    万次阅读 多人点赞 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数据结构

    万次阅读 2013-08-04 22:11:47
    一、List接口,有序的Collection接口,能够精确地控制每个元素插入的位置,允许有相同的元素 1.链表,LinkedList实现了List接口,允许null元素,提供了get()、remove()、insert()方法,没有同步方法 ...
    一、List接口,有序的Collection接口,能够精确地控制每个元素插入的位置,允许有相同的元素

    1.链表,LinkedList实现了List接口,允许null元素,提供了get()、remove()、insert()方法,没有同步方法


    2.数组列表,ArrayList,可以动态变化容量的数组,非同步的

    数组列表中存放的是Object类型,因此在数组列表中存放的对象类型,以其原型的父类代替,提取其中的元素时要进行类型转换


    二、Set接口,不包含重复元素的Collection接口
    1.散列集,HashSet,实现了Set接口,非线性同步
    与链表和数组列表几乎类似,但在数据处理时,比使用链表进行数据处理花费时间更短,处理大数据时通常使用散列集


    2.树集,TreeSet,实现了Set接口,实现了排序功能,该集合中的元素默认按升序排列元素
    使用树集数据结构的对象,需要实现Comparable接口,树集输出的数据都是经过排序的


    三、Map接口,没有继承Collection接口,其提供key到value的映射,Map中不能包含相同的key,每个key只能映射一个value。
    1.散列表类,HashTable,继承了Map接口,非空(non-null)的对象都可作为key或value,是同步的
    添加数据:put(key,value);
    取出数据:get(key);
    特点:无序的,因此可以快速查找特定的元素

    构造函数:Hashtable(),初始容量11,负载因子0.75,即散列表中已经有75%的位置被放满,则进行再散列。
    负载因子越高(越接近1),则内存使用率越高,元素的寻找时间越长,反之,则内存浪费越多,寻找时间越短
    key的对象将通过计算散函数确定与之对应的value位置 ,因此key的对象需要实现hashCode()和equals()方法。
    两个对象相同,则它们的hashCode必须相同;两个对象不同,则它们的hashCode不一定不同。
    冲突:不同对象的hashCode相同,则称为冲突,冲突将导致操作散列表的时间开销增大。因此要同时复写equals()和hashCode()方法
    2.散列映射类,HashMap,与HashTable类似,不是HashMap是非同步的,且允许null

    3.树映像,TreeMap,输出的数据按照关键字排序了
    展开全文
  • java数据结构算法

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

    千次阅读 多人点赞 2019-01-07 13:58:39
  • Java数据结构和算法

    千次阅读 多人点赞 2019-11-19 23:00:37
    Java数据结构和算法 BliBli视频链接地址为:《Java 数据结构与算法视频教程全集(195P)| 50 小时从入门到精通》 需要完整笔记课件等资料请联系邮箱:shaneholmes@qq.com 关于我的GitHub 以下是Java数据结构和算法...
  • Java 数据结构系列

    2018-10-05 20:12:56
    数据结构学习推荐(Java数据结构和算法)
  • 如何理解并掌握 Java 数据结构

    千次阅读 多人点赞 2019-11-13 11:11:45
    Jack和大家一起来重温《Java数据结构》经典之作。 第一部分:Java数据结构 要理解Java数据结构,必须能清楚何为数据结构? 数据结构: Data_Structure,它是储存数据的一种结构体,在此结构中储存一些数据,而这些...
  • Java数据结构与算法入门

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

    千次阅读 2014-03-13 21:11:01
    java 数据结构学习
  • 【版权申明】未经博主同意,不允许转载!(请尊重原创,博主保留追究权) ... 出自【zejian的博客】 关联文章:java数据结构与算法之顺序表与链表设计与实现...java数据结构与算法之改良顺序表与双链表类似ArrayList和L
  • Java数据结构及原理实现

    万次阅读 2017-07-21 16:18:03
    程序设计主要是数据结构+算法,而数据结构在面向对象思维里是“容器”的意思,数据结构主要...所以下面就简单介绍java数据结构的体系和部分原理实现java集合体系结构图集合父接口Collection,Map和集合工具类Collect
  • 图解Java数据结构和算法

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

    千次阅读 2018-08-09 08:21:45
    Java数据结构的知识体系主要包括线性表、树、图、数组、集合、矩阵、排序、查找、哈希表,并将Java的设计思想、方法以及一些常见的算法、设计模式贯穿其中; 1.【Collection接口:】 Collection  |-List | —...
  • Java数据结构Map的常用功能

    千次阅读 2020-11-09 09:39:44
    Java数据结构—Map 常用功能 添加功能: map.put(key,value); //添加元素或者修改value的值 删除功能 map.remove(key); 根据key的值删除对应value并且返回value map.clear(); 清除所有的对应关系 判断功能 map....
  • java数据结构与算法之栈(Stack)设计与实现

    万次阅读 多人点赞 2016-11-28 12:27:43
    【版权申明】转载请注明出处(请尊重原创,博主...关联文章:java数据结构与算法之顺序表与链表设计与实现分析 java数据结构与算法之双链表设计与实现 java数据结构与算法之改良顺序表与双链表类似ArrayList和LinkedL
  • java数据结构与算法的基础总结

    千次阅读 2017-10-09 11:03:30
    Java数据结构与算法之学习路线 最全的数据结构解析与归纳数据结构首先,要清楚数据结构的概念:数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。 我们在...
  • 【版权申明】未经博主同意,不允许转载!(请尊重原创,博主保留追究权) ... 出自【zejian的博客】 关联文章:java数据结构与算法之顺序表与链表设计与实现...java数据结构与算法之改良顺序表与双链表类似ArrayList和L
  • 老韩图解Java数据结构和算法-结束语(卖油翁和老黄牛).avi 老韩图解Java数据结构和算法-骑士周游回溯算法用贪心算法优化.avi 老韩图解Java数据结构和算法-骑士周游回溯算法代码实现(3).avi 老韩图解Java数据结构和...
  • Java数据结构和算法中文第二版

    千次阅读 2019-05-11 20:36:59
    收藏自用 链接:Java数据结构和算法中文第二版
  • Java数据结构和算法(二)——数组

    万次阅读 多人点赞 2014-09-23 23:59:27
    Java数据结构和算法(二)——数组
  • java数据结构和算法之目录
  • 程序 = 数据结构 + 算法 ——图灵奖得主,计算机科学家N.Wirth(沃斯) 学会掌握算法思想,应对编程比赛与世界五百强面试题。 作为程序员,我们做机器学习也好,做Python开发也好,Java开发也好。 有一种对所有程序员...
  • java数据结构:双向链表结构与实现

    千次阅读 2018-01-26 20:57:12
    本教程的内容基本来自于《Java数据结构与算法》 单向链表的缺点在于每个节点只能知道自己与下一个节点,无法寻找到上一个节点。而双向链表可以解决这个问题,通过在节点内部添加一个previous指针,指向它的前一节点...
  • Java数据结构与算法高级篇之树、图

    千次阅读 2019-01-20 00:00:38
    数据是基础,算法是灵魂 本文出自门心叼龙的博客,属于原创类容,转载请注明出处。... 源码下载地址:... 初级篇:Java数据结构与算法初级篇之数组、集合和散列表 中级篇:Java数据结...
  • java数据结构与算法之双链表设计与实现

    万次阅读 多人点赞 2016-11-06 22:37:24
    转载请注明出处(万分感谢!): ... 出自【zejian的博客】 ...java数据结构与算法之双链表设计与实现  上一篇文章分析顺序表和单链表,本篇就接着上篇继续聊链表,在单链表分析中,我们可以知道每个结点只有一个指向后
  • 线性结构和非线性结构 队列 顺序队列 循环队列 链表 链表(Linked List)介绍 链表是有序的列表,但是它在内存中是存储如下 小结: 1) 链表是以节点的方式来存储,是链式存储 2)每个节点包含 data 域, ...
  • 郝斌老师全套自学视频(java c语言 java 数据结构等) 有需要的朋友赶紧拿走吧         下载地址: 百度网盘

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 97,275
精华内容 38,910
关键字:

java数据结构

java 订阅
数据结构 订阅