java数据结构有哪几种,java数据结构有哪些-

  java数据结构有哪几种,java数据结构有哪些?

  如何解决写爬虫IP受阻的问题?立即使用。

  本教程运行环境:windows7系统,java8版本8,DELL G3电脑。

  Java常见数据结构

  这八种数据结构有什么区别?

  、数组

  优势:

  根据索引查询元素非常快;

  通过索引遍历数组也很方便。

  缺点:

  数组的大小在创建后确定,不能扩展;

  数组只能存储一种类型的数据;

  添加和删除元素需要很长时间,因为必须移动其他元素。

  、链表

  书中755-79000这样定义了链表:

  Java LinkedList类可以用代码的形式形象地表示链表的结构:

  公共类链接列表{

  瞬态节点优先;

  瞬态NodeE last

  私有静态类节点{

  e项;

  NodeE next

  NodeE prev

  节点(上一个节点,元素,下一个节点){

  this.item=element

  this.next=next

  this.prev=prev

  }

  }

  }这是一个双向链表。当前元素项既有prev又有next,但第一个的prev为空,最后一个的next为空。如果是单向链表,只有next,没有prev。

  因为链表不必按顺序存储,所以在插入和删除时可以达到O(1)的时间复杂度(只需要再次指向引用,不需要像数组一样移动其他元素)。此外,链表还克服了数组必须事先知道数据大小的缺点,实现了灵活的动态内存管理。

  优势:

  不需要初始化容量;

  您可以添加任何元素;

  您只需要在插入和删除时更新引用。

  缺点:

  包含大量引用,占用内存空间大;

  查找元素需要遍历整个链表,需要时间。

  、栈

  堆栈就像一个水桶,底部是密封的,顶部是敞开的,水可以进出。用过水桶的朋友应该明白这个道理:先进去的水在桶底,后进去的水在桶顶;进去的水先倒出来,先进去的水后倒出来。

  同样,堆栈按照“后进先出”和“先入后出”的原则存储数据。第一个插入的数据被推到堆栈的底部,后面插入的数据在堆栈的顶部。读取数据时,从栈顶依次读取。

  、队列

  队列就像一段水管,两头都是敞开的。水从一端进入,然后从另一端出来。先进的水先出来,进去的水后出来。

  和水管不同,队列定义了两端,一端叫队列头,另一端叫队列尾。只有删除操作(出列)允许在队列的头部,插入操作(入队)允许在队列的尾部。

  、树

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

  之所以称之为“树”,是因为这种数据结构看起来像一棵倒置的树,只不过根在上面,叶子在下面。树形数据结构具有以下特征:

  每个节点只有有限的子节点或没有子节点;

  没有父节点的节点称为根节点;

  每个非根节点只有一个父节点;

  除了根节点之外,每个子节点都可以分成多个不相交的子树。

  下图显示了树的一些术语:

  基于二叉查找树的特点,与其他数据结构相比,其优势在于查找和插入的时间复杂度较低,为O(logn)。如果要从上图中找到五行,就要从根节点7开始,5一定在7的左边,找到4,那么5一定在4的右边,找到6,那么5一定在6的左边,找到了。

  理想情况下,通过BST搜索节点,需要检查的节点数量可以减半。

  平衡二叉树:当且仅当任一节点的两个子树之间的高度差不大于1时,才是二叉树。前苏联数学家Adelse-Velskil和Landis在1962年提出的高度平衡二叉树,根据科学家的英文名字也叫AVL树。

  平衡二叉树本质上是一个二叉查找树。但是,为了限制左右子树的高度差,避免倾斜的树趋向于线性结构演化的情况,二叉查找树中每个节点的左右子树都受到限制。左右子树的高度差称为平衡因子,树中每个节点的平衡因子的绝对值不大于1。

  二叉树平衡的难点在于删除或添加节点时如何保持左右平衡。

  Java中最常见的平衡二叉树是具有红色或黑色节点的红黑树,二叉树的平衡由颜色约束来维持:

  1)每个节点只能是红色或黑色。

  2)根节点是黑色的

  3)每个叶节点(NIL节点,空节点)是黑色的。

  4)如果一个节点是红色的,它的两个子节点都是黑色的。也就是说,两个相邻的红色节点不能出现在一条路径上。

  5)从任何节点到它的每个叶子的所有路径包含相同数量的黑色节点。

  、堆

  堆可以看作一棵树的数组对象,它具有以下特征:

  堆中节点的值总是不大于或不小于其父节点的值;

  总是堆砌一个完整的二叉树。

  根节点最大的堆称为最大堆或大根堆,根节点最小的堆称为最小堆或小根堆。

  在线性结构中,数据元素满足唯一的线性关系,每个数据元素(除了第一个和最后一个)都有唯一的“前任”和“继任者”;

  在树形结构中,数据元素之间有明显的层次关系,每个数据元素只与上层的一个元素(父节点)和下层的几个元素(子节点)相关。

  在图结构中,节点之间的关系是任意的,并且图中的任意两个数据元素可能是相关的。

  、哈希表

  哈希表,也称为哈希表,是一种可以通过键值直接访问的数据结构。它最大的特点是可以快速查找、插入和删除。

  array最大的特点就是容易找到,但是很难插入和删除。相反,链表很难找到,但很容易插入和删除。哈希表完美的结合了两者的优点,Java的HashMap也加入了tree的优点。

  哈希函数在哈希表中起着重要的作用。它可以将任何长度的输入转换为固定长度的输出,即哈希值。哈希函数使数据序列的访问过程更快、更有效。通过哈希函数,可以快速定位数据元素。

  如果关键字是k,它的值存储在hash(k)的存储位置。所以不需要遍历就可以直接得到k对应的值。

  任何两个不同的数据块都极不可能有相同的hash值,也就是说,对于一个给定的数据块,要找到具有相同hash值的数据块是极其困难的。再者,对于一个数据块来说,即使只改变了其中的一位,其hash值的变化也会非常大——,这就是Hash的值!

  虽然可能性极小,但还是会发生。如果哈希冲突,Java的HashMap会在数组的相同位置添加一个链表。如果链表的长度大于8,就会转换成红黑树进行处理。3354这就是所谓的拉链方法(数组链表)。

  有关编程的更多信息,请访问:编程视频!以上是java常用数据结构的详细介绍。更多详情请关注我们的其他相关文章!

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • mysql复合索引和组合索引,mysql组合索引数据结构
  • mysql复合索引和组合索引,mysql组合索引数据结构,Mysql之组合索引方法详解
  • mysql复合索引和组合索引,mysql复合索引数据结构
  • mysql复合索引和组合索引,mysql复合索引数据结构,MySQL的复合索引总结
  • b+树 多路搜索树,数据结构中树的分类
  • b+树 多路搜索树,数据结构中树的分类,数据结构-树(三):多路搜索树B树、B+树
  • avl树的构造,avl树特性,数据结构之AVL树详解
  • 数据结构c语言哈夫曼树,c语言哈夫曼树的构造,使用C语言详解霍夫曼树数据结构
  • c语言数据结构算法编程库,数据结构 c语言中文网
  • c语言数据结构算法编程库,数据结构 c语言中文网,C语言编程数据结构基础详解小白篇
  • c++纸牌游戏,数据结构纸牌游戏c语言
  • c++纸牌游戏,数据结构纸牌游戏c语言,C语言实战之纸牌游戏
  • ,,c#解析jobject的数据结构
  • ,,javascript数据结构之多叉树经典操作示例【创建、添加、遍历、移除等】
  • ,,Java 数据结构与算法系列精讲之背包问题
  • 留言与评论(共有 条评论)
       
    验证码: