JAVA数据结构有哪些?

本文详细介绍了数据结构的基础知识,包括数组的快速查询与不便扩容的特点,链表的动态内存管理和高效插入删除,栈的后进先出原则,队列的先进先出特性,以及树和图的层次关系。此外,还讨论了堆和哈希表在存储和查找效率上的优势。这些基础知识对于理解计算机科学至关重要。
摘要由CSDN通过智能技术生成
  1. 数组
  2. 链表,一种递归的数据结构
  3. 栈 后进先出 ,先进后出的原则来存储数据
  4. 队列
  5. 树 是由n(n>0)个有限节点组成的一个具有层次关系的集合
  6. 哈希表

数组:

优点:1、按照索引查询元素的速度很快。

      2、按照索引遍历数组也很方便。

缺点:1、数组的大小在创建后就确定了,无法扩容。

      2、数组只能存储一种类型的数据。

添加、删除元素的操作很耗时间,因为要移动其他元素。

链表

《链表是一种递归结构,它或者为空(null),或者是指向一个结点(node)的引用,该节点还有一个元素和一个指向另一条链表的引用》。

这是一种双向链表,当前元素item既有prev又有next,不过first的prev为null,Last的next为null.如果是单向链表的话,就只有next,没有prev.

单向链表的缺点是只能从头到尾依次遍历,而双向链表可进可退,既能找到下一个,也能找到上一个—每个节点上都需要多分配一个存储空间。

链表中的的数据按照“链式”的结构存储,因此可以达到内存上非连续的效果,数组必须是一块连续的内存。

由于不必按照顺序的方式存储,链表在插入、删除的时候可以达到O(1)的时间复杂度(只需要重新指向引用即可,不需要像数组那样移动其他元素)。除此之外,链表还克服了数组必须预先知道数据大小的缺点。,从而可以实现灵活的内存动态管理。

优点:

  1. 不需要初始化容量
  2. 可以添加任意元素
  3. 插入和删除的时候只需要更新引用。

缺点:

  1. 含有大量的引用,占用的内存空间大。
  2. 查找元素需要遍历整个链表,耗时。

栈就像水桶一样,底部是密封的,顶部是开口,水可以进可以出。先进去的水在桶的底部,后进去的水在桶的顶部:后进去的水后被倒进来。

后进先出、先进后出的原则来存储数据。

队列

队列就好像水管一样,两端都是开口的,水从一端进去,然后从另外一端出来。先进去的水先出来,后进去的水后出来。

和水管不同:队列会对两端进行定义,一端叫队头,另外一端叫队尾。队头只允许删除操作(出队),队尾只允许插入操作(入队)。

树是一种典型的非线性结构,它是由n(n>0)个有限节点组成的一个具有层次关系的集合。

堆可以被看做是一颗树的数组对象,具有以下特点:

  1. 堆中某个节点的值总是不大于或不小于其父节点的值
  2. 堆总是一课完全二叉树

哈希表

也叫散列表。是一种可以通过关键码值(key-value)直接访问的数据结构,它最大的特点是可以快速实现查找、插入和删除。

哈希表完美结合了数组和链表的优点。JAVA的HASHMap在此基础上还计入了树的优点。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值