发布时间:2022-04-25 09:40:15来源:魔方格
Java开发数据结构有哪些?1、数组;2、链表,一种递归的数据结构;3、栈,按照“后进先出”、“先进后出”的原则来存储数据;4、队列;5、树,是由 n(n>0)个有限节点组成的一个具有层次关系的集合;6、堆;7、图;8、哈希表。
①、数组
优点:
按照索引查询元素的速度很快;
按照索引遍历数组也很方便。
缺点:
数组的大小在创建后就确定了,无法扩容;
数组只能存储一种类型的数据;
添加、删除元素的操作很耗时间,因为要移动其他元素。
②、链表
链表是一种递归的数据结构,它或者为空(null),或者是指向一个结点(node)的引用,该节点还有一个元素和一个指向另一条链表的引用。
优点:
不需要初始化容量;
可以添加任意元素;
插入和删除的时候只需要更新引用。
缺点:
含有大量的引用,占用的内存空间大;
查找元素需要遍历整个链表,耗时。
③、栈
栈就好像水桶一样,底部是密封的,顶部是开口,水可以进可以出。用过水桶的小伙伴应该明白这样一个道理:先进去的水在桶的底部,后进去的水在桶的顶部;后进去的水先被倒出来,先进去的水后被倒出来。
同理,栈按照“后进先出”、“先进后出”的原则来存储数据,先插入的数据被压入栈底,后插入的数据在栈顶,读出数据的时候,从栈顶开始依次读出。
④、队列
队列就好像一段水管一样,两端都是开口的,水从一端进去,然后从另外一端出来。先进去的水先出来,后进去的水后出来。
和水管有些不同的是,队列会对两端进行定义,一端叫队头,另外一端就叫队尾。队头只允许删除操作(出队),队尾只允许插入操作(入队)。
⑤、树
树是一种典型的非线性结构,它是由 n(n>0)个有限节点组成的一个具有层次关系的集合。
之所以叫“树”,是因为这种数据结构看起来就像是一个倒挂的树,只不过根在上,叶在下。树形数据结构有以下这些特点:
每个节点都只有有限个子节点或无子节点;
没有父节点的节点称为根节点;
每一个非根节点有且只有一个父节点;
除了根节点外,每个子节点可以分为多个不相交的子树。
⑥、堆
堆可以被看做是一棵树的数组对象,具有以下特点:
堆中某个节点的值总是不大于或不小于其父节点的值;
堆总是一棵完全二叉树。
将根节点较大的堆叫做较大堆或大根堆,根节点较小的堆叫做较小堆或小根堆。
在线性结构中,数据元素之间满足的线性关系,每个数据元素(除第一个和较后一个外)均有的“前驱”和“后继”;
在树形结构中,数据元素之间有着明显的层次关系,并且每个数据元素只与上一层中的一个元素(父节点)及下一层的多个元素(子节点)相关;
而在图形结构中,节点之间的关系是任意的,图中任意两个数据元素之间都有可能相关。
⑦、图
图是一种复杂的非线性结构,由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。
⑧、哈希表
哈希表(Hash Table),也叫散列表,是一种可以通过关键码值(key-value)直接访问的数据结构,它较大的特点就是可以实现查找、插入和删除。
数组的较大特点就是查找容易,插入和删除困难;而链表正好相反,查找困难,而插入和删除容易。哈希表很完美地结合了两者的优点, Java 的 HashMap 在此基础上还加入了树的优点。