iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java中的数据结构有哪些
  • 578
分享到

java中的数据结构有哪些

2023-06-14 12:06:56 578人浏览 安东尼
摘要

java中的数据结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只

java中的数据结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只提供方法,并不提供实现),而程序中最终使用的数据结构是继承自这些接口的数据结构类。

Collection---->Collections   Map----->SortedMap------>TreeMap          Map------>HashMapCollection---->List----->(Vector \ ArryList \ LinkedList)Collection---->Set------>(HashSet \ LinkedHashSet \ SortedSet)

List(接口)

List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下 >标)来访问List中的元素,这类似于Java的数组。

Vector

基于数组(Array)的List,其实就是封装了数组所不具备的一些功能方便我们使用,所以它难易避免数组的限制,同时性能也不可能超越数组。所以,在可能的情况下,我们要多运用数组。另外很重要的一点就是Vector是线程同步的(sychronized)的,这也是Vector和ArrayList 的一个的重要区别。

ArrayList

同Vector一样是一个基于数组上的链表,但是不同的是ArrayList不是同步的。所以在性能上要比Vector好一些,但是当运行到多线程环境中时,可需要自己在管理线程的同步问题。

LinkedList

LinkedList不同于前面两种List,它不是基于数组的,所以不受数组性能的限制。

它每一个节点(node)都包含两方面的内容:

节点本身的数据(data);

下一个节点的信息(nextNode)。

所以当对LinkedList做添加,删除动作的时候就不用像基于数组的ArrayList一样,必须进行大量的数据移动。只要更改nextNode的相关信息就可以实现了,这是LinkedList的优势。

List总结

所有的List中只能容纳单个不同类型的对象组成的表,而不是Key-Value键值对。例如:[ tom,1,c ]

所有的List中可以有相同的元素,例如Vector中可以有 [ tom,koo,too,koo ]

所有的List中可以有null元素,例如[ tom,null,1 ]

基于Array的List(Vector,ArrayList)适合查询,而LinkedList 适合添加,删除操作

Set(接口)

Set是不包含重复元素的Collection

HashSet

虽然Set同List都实现了Collection接口,但是他们的实现方式却大不一样。List基本上都是以Array为基础。但是Set则是在 HashMap的基础上来实现的,这个就是Set和List的根本区别。HashSet的存储方式是把HashMap中的Key作为Set的对应存储项。看看 HashSet的add(Object obj)方法的实现就可以一目了然了。

LinkedHashSet

HashSet的一个子类,一个链表。

SortedSet

有序的Set,通过SortedMap来实现的。

Map(接口)

Map 是一种把键对象和值对象进行关联的容器,而一个值对象又可以是一个Map,依次类推,这样就可形成一个多级映射。对于键对象来说,像Set一样,一个 Map容器中的键对象不允许重复,这是为了保持查找结果的一致性;如果有两个键对象一样,那你想得到那个键对象所对应的值对象时就有问题了,可能你得到的并不是你想的那个值对象,结果会造成混乱,所以键的唯一性很重要,也是符合集合的性质的。

当然在使用过程中,某个键所对应的值对象可能会发生变化,这时会按照最后一次修改的值对象与键对应。对于值对象则没有唯一性的要求,你可以将任意多个键都映射到一个值对象上,这不会发生任何问题(不过对你的使用却可能会造成不便,你不知道你得到的到底是那一个键所对应的值对象)。

(免费视频教程分享:java视频教程)

HashMap

基于哈希表的 Map 接口的实现。此实现提供所有可选的映射操作,并允许使用 null 值和 null 键。(除了不同步和允许使用 null 之外,HashMap 类与 Hashtable 大致相同。)此类不保证映射的顺序,特别是它不保证该顺序恒久不变。另外,HashMap是非线程安全的,也就是说在多线程的环境下,可能会存在问题,而Hashtable是线程安全的。

TreeMap

TreeMap则是对键按序存放,

HashTable

(1)Hashtable 是一个散列表,它存储的内容是键值对(key-value)映射。

(2)Hashtable 继承于Dictionary,实现了Map、Cloneable、java.io.Serializable接口。

(3)Hashtable 的函数都是同步的,这意味着它是线程安全的。它的key、value都不可以为null。

几个常用类的区别

1.ArrayList: 元素单个,效率高,多用于查询

2.Vector: 元素单个,线程安全,多用于查询

3.LinkedList:元素单个,多用于插入和删除

4.HashMap: 元素成对,元素可为空

5.HashTable: 元素成对,线程安全,元素不可为空

Vector、ArrayList和LinkedList

大多数情况下,从性能上来说ArrayList最好,但是当集合内的元素需要频繁插入、删除时LinkedList会有比较好的表现,但是它们三个性能都比不上数组,另外Vector是线程同步的。所以:

如果能用数组的时候(元素类型固定,数组长度固定),请尽量使用数组来代替List;

如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择ArrayList;

如果在多线程条件下使用,可以考虑Vector;

如果需要频繁地删除插入,LinkedList就有了用武之地;

如果你什么都不知道,用ArrayList没错。

栈是只能在某一端插入和删除的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后

的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。

队列

一种特殊的线性表,它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作。进行

插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。

数组

在程序设计中,为了处理方便, 把具有相同类型的若干变量按有序的形式组织起来。这些按序排列的同类数

据元素的集合称为数组。在C语言中, 数组属于构造数据类型。一个数组可以分解为多个数组元素,这些数组

元素可以是基本数据类型或是构造类型。因此按数组元素的类型不同,数组又可分为数值数组、字符数组、指

针数组、结构数组等各种类别。

链表

一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。

链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。每个结点包括两个部分:

一个是存储数据元素的数据域,另一个是存储下一个结点地址的指针域。

树是包含n(n>0)个结点的有穷集合K,且在K中定义了一个关系N,N满足 以下条件:

(1)有且仅有一个结点 k0,他对于关系N来说没有前驱,称K0为树的根结点。简称为根(root)

(2)除K0外,k中的每个结点,对于关系N来说有且仅有一个前驱。

(3)K中各结点,对关系N来说可以有m个后继(m>=0)。

在计算机科学中,堆是一种特殊的树形数据结构,每个结点都有一个值。通常我们所说的堆的数据结构,是指

二叉堆。堆的特点是根结点的值最小(或最大),且根结点的两个子树也是一个堆。

散列表

若结构中存在关键字和K相等的记录,则必定在f(K)的存储位置上。由此,不需比较便可直接取得所查记录。称

这个对应关系f为散列函数(Hash function),按这个思想建立的表为散列表。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注编程网精选频道,感谢您对编程网的支持。

--结束END--

本文标题: java中的数据结构有哪些

本文链接: https://www.lsjlt.com/news/270681.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中的数据结构有哪些
    java中的数据结构有哪些?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java中有几种常用的数据结构,主要分为Collection和map两个主要接口(接口只...
    99+
    2023-06-14
  • java中有哪些数据结构
    Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:(推荐:java视频教程)枚举(Enumeration)枚举(Enumeration)接口虽然它本身不属于数据结构,但它在其他数据结构的范畴里应用很广。 枚...
    99+
    2021-03-02
    java 数据结构
  • java数据结构有哪些
    java中的数据结构有:1.ArrayList,链表;2.LinkedList,线性表;3.HashMap,提供了key-value键值对数据存储机制;4.HashSet,不允许存在重复元素;java中的数据结构有以下几种ArrayList...
    99+
    2022-10-23
  • 通用的Java数据结构有哪些
    本篇内容主要讲解“通用的Java数据结构有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“通用的Java数据结构有哪些”吧!1.数组数组是固定大小的结构,可以...
    99+
    2022-10-19
  • java线性数据结构有哪些
    java中的线性数据结构有:1.数组;2.队列;3.链表;4.栈;java中的线性数据结构有以下几种数组java中数组是是使用单独的变量名来存储一系列的值,可以用一个变量名存储所有的值,并且可以使用变量名访问任何一个值。队列java中队列是...
    99+
    2022-10-13
  • java常用数据结构有哪些
    Java常用的数据结构有以下几种:1. 数组(Array):一组连续的内存空间,用于存储同类型的数据。2. 链表(Linked Li...
    99+
    2023-08-23
    Java
  • Java中的数据结构与算法有哪些
    这篇文章给大家介绍Java中的数据结构与算法有哪些,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。第一部分:Java数据结构要理解Java数据结构,必须能清楚何为数据结构?数据结构:Data_Structure,它是储存...
    99+
    2023-06-08
  • redis中有哪些数据结构
    小编给大家分享一下redis中有哪些数据结构,希望大家阅读完这篇文章后大所收获,下面让我们一起去探讨吧!redis数据结构有哪些?字符串(strings):存储整数(比如计数器)和字符串(废话。。),有些公...
    99+
    2022-10-18
  • Java常见基础数据结构有哪些
    这篇文章主要介绍Java常见基础数据结构有哪些,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!栈:stack,又称堆栈,他是运算受限的线性表,其限制是仅允许在表的一端进行插入和删除操作,不允许在其他任何位置进行添加、查...
    99+
    2023-06-20
  • golang有哪些数据结构
    golang中的数据结构有:1.string,字符串,内置类型,默认值为"";2.array,数组,具有相同唯一类型的一组已编号且长度固定的数据项序列;3.slice,切片,数组的抽象;4.map,集合,无序的、键值对的...
    99+
    2022-10-09
  • python中有哪些yaml数据结构
    这篇文章将为大家详细讲解有关python中有哪些yaml数据结构,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1、数据结构(1)对象:键值对的集合(简称 "映射或字典")...
    99+
    2023-06-15
  • Redis中都有哪些数据结构
    今天就跟大家聊聊有关Redis中都有哪些数据结构,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Redis核心对象在Redis中有一个「核心的对象」叫...
    99+
    2022-10-18
  • 常用的Java数据结构知识点有哪些
    小编给大家分享一下常用的Java数据结构知识点有哪些,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!1. 数据结构分类按照线性和非线性可以将Java数据结构分为两大类:①线性数据结构:数组、链表、栈、队列②非线性数据结构:树...
    99+
    2023-06-29
  • Java 数据结构中有哪些常见的接口和类
    Java 数据结构中有哪些常见的接口和类?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:枚举(...
    99+
    2023-05-31
    java 数据结构 接口
  • Redis的数据结构都有哪些
    Redis的数据结构主要有以下几种:1. 字符串(string):存储字符串类型的值,可以是普通字符串、整数或浮点数。2. 列表(l...
    99+
    2023-08-23
    Redis
  • Python中的常用数据结构有哪些?
    Python是一种高级编程语言,广泛应用于数据分析、机器学习、Web开发等领域。在Python中,有许多常用的数据结构,用于存储和处理数据。本文将介绍几种常见的数据结构,并提供相应的代码示例。列表(List):列表是Python中最常用的数...
    99+
    2023-10-22
    列表(list) 元组(tuple) 字典(Dict)
  • Javascript中有哪些常见的数据结构
    本篇文章为大家展示了Javascript中有哪些常见的数据结构,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.Stack(栈)堆栈遵循LIFO(后进先出)的原则。...
    99+
    2022-10-19
  • Java常见数据结构和算法有哪些
    Java常见的数据结构包括:数组、链表、栈、队列、树、图、堆、哈希表等。常见的算法有:排序算法(如冒泡排序、插入排序、选择排序、快速...
    99+
    2023-09-13
    Java
  • python中有哪些内置数据结构
    这篇文章给大家介绍python中有哪些内置数据结构,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。python的数据类型有哪些python的数据类型:1. 数字类型,包括int(整型)、long(长整型)和float(浮...
    99+
    2023-06-14
  • linux内核中有哪些数据结构
    linux内核中的数据结构有:1.链表,用于解决数组不能动态扩展缺陷;2.队列,用于使得进程等待某一特定事件的发生;3.二叉树,可以提供分层树型数据结构的特定数据结构;linux内核中的数据结构有常见的几种链表链表是在解决数组不能动态扩展缺...
    99+
    2022-10-08
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作