一、数据结构知识。数据结构分为逻辑结构和物理结构,下面是百度百科的数据结构知识。
元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关。逻辑结构包括:
集合
数据结构中的元素之间除了“同属一个集合” 的相互关系外,别无其他关系;
数据结构中的元素存在一对一的相互关系;
数据结构中的元素存在一对多的相互关系;
数据结构中的元素存在多对多的相互关系。
逻辑结构除了这样分还可以分为线性结构和非线性结构:
线性结构和非线性结构同属于数据结构中的逻辑结构类型,线性结构是指该结构中的节点之间存在一对一的关系.其特点是开始节点和终端节点都是唯一的,除了开始节点和终端节点外,其余节点都有且仅有一个直接前驱,有且仅有一个直接后继.此类型的存储结构有:顺序表(数组)、链表、堆栈结构、队列结构等 非线性结构又包括集合、树形结构、图形结构或网状结构,特点是数据元素之间存在一个对多个或多个对多个的关系,其中集合是一种关系极为松散的结构.
数据的物理结构:常用两种存储结构:顺序存储结构和链式存储结构。顺序映像借助元素在存储器中的相对位置来表示数据元素之间的逻辑关系。非顺序映像借助指示元素存储位置的指针(pointer)来表示数据元素之间的逻辑关系。
二、数组
数组在数据结构中的逻辑结构:线性结构,物理结构:顺序存储。
了解数组的基础知识:Java 数组基础,了解数组的申明,在内存中的结构。
数组中数组长度是在申明时就固定了的,因为你申明的时候就要决定在内存中开辟的内存长度,所以数组的length是一个属性,在数组对象new出来的时候就已经决定了。
数组还分了有序数组和无序数组,有序数组是指数组中的元素是排好序了的,排序有冒泡排序(每一次循环都冒出一个最大或者最小的)。排序数组可以用java.util.Arrays这个类的方法进行,这个类的方法都是静态的,都是一些对java数组的操作。
三、集合
在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。