1、数据结构知识。数据结构分为逻辑结构和物理结构,下面是百度百科的数据结构知识。html
数据的逻辑结构:指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的先后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括:java
集合数组
数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其余关系;数据结构
2.线性结构异步
数据结构中的元素存在一对一的相互关系;url
3.树形结构spa
数据结构中的元素存在一对多的相互关系;.net
4.图形结构指针
数据结构中的元素存在多对多的相互关系。htm
逻辑结构除了这样分还能够分为线性结构和非线性结构:
线性结构和非线性结构同属于数据结构中的逻辑结构类型,线性结构是指该结构中的节点之间存在一对一的关系.其特色是开始节点和终端节点都是惟一的,除了开始节点和终端节点外,其他节点都有且仅有一个直接前驱,有且仅有一个直接后继.此类型的存储结构有:顺序表(数组)、链表、堆栈结构、队列结构等 非线性结构又包括集合、树形结构、图形结构或网状结构,特色是数据元素之间存在一个对多个或多个对多个的关系,其中集合是一种关系极为松散的结构.
数据的物理结构:经常使用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。
2、数组
数组在数据结构中的逻辑结构:线性结构,物理结构:顺序存储。
了解数组的基础知识:Java 数组基础 ,了解数组的申明,在内存中的结构。
数组中数组长度是在申明时就固定了的,由于你申明的时候就要决定在内存中开辟的内存长度,因此数组的length是一个属性,在数组对象new出来的时候就已经决定了。
数组还分了有序数组和无序数组,有序数组是指数组中的元素是排好序了的,排序有冒泡排序(每一次循环都冒出一个最大或者最小的)。排序数组能够用java.util.Arrays这个类的方法进行,这个类的方法都是静态的,都是一些对java数组的操做。
3、集合
在java中的集合和数据结构中的集合是不同的意义,数据结构中的集合是指:数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其余关系;而java中的集合是指一系列的有关数据的经常使用操做,有Arraylist,Map等等都是集合里的东西,下面是有关集合的介绍Java集合类详解 。
这里的set就跟数据结构里的set类似。
Vector和HashTable是同步的,别的都是异步的。
ArrayList底层实际就是一个数组若是这个数组满了就将建立新数组比旧数组大的而后复制旧数组到新数组去,因此ArrayList又称动态数组。查询第i个元素比LinkedList快,LinkedList须要移动指针来查。
LinkedList底层实际采用的是双链表,因此add都某个指定位置i,和Remove某个指定元素i效率比ArrayList,由于只须要移动一下指针,而ArrayList因为采用数组结构,须要移动i以后的整个数据位置。
Vector和ArrayList实现同样的,只是实现了同步,因此效率比ArrayList低一点。
Stack继承自Vector,是后进先出的堆栈,把最后一个元素当栈顶,具体查看以下文章:java.util.Stack类简介,java.util.Stack只是实现了队列的功能,可是没有队列Queue的完整性和一致性,若是要使用队列,建议使用Deque。