Java数据结构和算法

发布于:2023-02-02 ⋅ 阅读:(312) ⋅ 点赞:(0)

俗话说的好:“算法学的好,工作不愁找”,不管我们学习哪一门语言,我们都要掌握从抽象化中提取出来的方法,这样你才能提高我们的学习能力,并且在学习新事物的时候可以提取我们自己的想法。学习java的数据结构和算法,如果感到学的比较吃力,可以从最基础的知识学起, 学习中也一定要有一个循序渐进的过程。

算法是为求解一个问题需要遵循的、被清楚指定的简单指令的集合。

数据结构是以某种形式将数据组织在一起的集合,它不仅存储数据,还支持访问和处理数据的操作。

小编在这里也整理了一个Java数据结构和算法的自学视频教程,程序员必修课以及面试必备

视频链接:

https://www.bilibili.com/video/BV19a411S7g8?p=2&spm_id_from=pageDriver&vd_source=a7816e3b2a3a67ac39dc87f6bf92421cicon-default.png?t=M666https://www.bilibili.com/video/BV19a411S7g8?p=2&spm_id_from=pageDriver&vd_source=a7816e3b2a3a67ac39dc87f6bf92421c

Java 数据结构

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

  • 枚举(Enumeration)

  • 位集合(BitSet)

  • 向量(Vector)

  • 栈(Stack)

  • 字典(Dictionary)

  • 哈希表(Hashtable)

  • 属性(Properties)

枚举(Enumeration)

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

位集合(BitSet)

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

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

向量(Vector)

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

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

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

(Stack)

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

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

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

字典(Dictionary)

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

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

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

哈希表(Hashtable)

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

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

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

属性(Properties)

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

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

Java算法

算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,java算法就是采用Java语言来实现解决某一问题的清晰指令。

算法的特征:

输入性:有零个或多个外部量作为算法的输入

输出性:算法产生至少一个量作为输出

确定性:算法中每条指令清晰,无歧义

有穷性:算法中每条指令的执行次数有限,执行每条指令是时间也有限

可行性:算法原则上能够精确的运行,而且人们用纸和笔做有限次运算后即可完成

程序:算法用某种程序设计语言的具体实现,程序可以不满足又穷性

算法的四个标准:

正确性:在合理的数据输入下,能在有限时间内得出正确的结果

可读性:应易于人的理解,易于调试

健壮性:具备检查错误和对错误进行适当处理的能力

效率:算法执行时所需计算机资源的多少,包括运行时间和存储空间

算法的描述形式:1、自然语言 2、算法框图法 3、伪代码语言 4、高级程序设计语言