Java中的基本容器知识你真的了解过吗?

这篇具有很好参考价值的文章主要介绍了Java中的基本容器知识你真的了解过吗?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言:尽量使用简单易懂的通俗语言让大家初步了解各个重要的知识点。博学之,审问之,慎思之,明辨之,笃行之。

 文章来源地址https://www.toymoban.com/news/detail-437629.html

一、容器(Collection)

Java中的基本容器知识你真的了解过吗?

 

Collection容器其实是用来存储独立元素的各种数据结构,如图所示。主要是Set、List、Queue等数据结构,又分为不同的分支具有部分不同的属性和特性。Collection是整个集合框架的基础,提供了维护一组对象的基本接口

 

1、ArrayList

ArrayList其实就是动态数组或可扩容数组,底层也是数组实现,基本容量为10,扩容机制为(size*1.5),即每次扩容都是上一次的1.5倍。这也就导致如果数据量较大时,进行写入数据会较慢,因为需要进行不断的扩容。

 

2、LinkedList

LinkedList是顺序访问结构,也就是链表,内部实现为双向列表,因此在头尾增删数据会比较迅速,随机插入则需要遍历。

 

3、Vector

Vector类似于ArrayList,但是扩容机制不同,它的扩容机制默认为2倍,且相比之下是线程安全的。因为大多数Vector的方法是synchroization(同步),而ArrayList的方法是不同步的。且Stack为Vector的子类。

 

 二、Map类

 Java中的基本容器知识你真的了解过吗?

1、HashMap

HashMap是最常用的Map结构,通常用来存储K-V键值对形式的数据,且用数组来存储键值对,根据Key的hashcode来决定数组下标。且目前版本的JDK,HashMap的底层实现是通过数组+树+链表的形式。一般只有当一个Key对应多个值,使得该hashcode下标对应的链表超过阈值时,会将链表重构为红黑树。查找的时间复杂度由链表的O(n)变成红黑树的O(log2n)。

其默认容量是16,且扩容为size*2,且一定为2的指数。

 

 2、LinkedHashMap

与HashMap相比,LInkedHashMap内部维护了一个双向链表,使得存储的数据是有序的,而HashMap一般是无序的。且该双向链表可以看做是环形的。

 

 

 3、HashTable

HashTable与HashMap类似,但是有以下不同点:

1、HashMap允许存储有且仅有一个Null值作为Key,HashTable不可以。

2、HashTable被Sybchronized修饰,意味着它的实现是线程安全的,HashMap则不是。

3、HashTable的默认容量是11,扩容机制为size*2+1

 

 4、TreeMap

类似于HashMap,不同点在于实现lSortMap接口,可以按顺序或自定义顺序进行遍历。

 

 三、Set(集合)

Java中的基本容器知识你真的了解过吗?

 

1、HashSet

集合的两个特性:

1、HashSet里不能有重复的元素

2、最多只允许有一个Null。

 且HashSet实际上不是线程安全的,且存储的数据也是无序的。

2、LinkedHashSet

与HashSet相比,LinkedHashSet则是可以维护插入元素的顺序,因为其内部有双向链表进行对数据的维护。

3、TreeSet

TreeSet具有HashSet的所有特性,并且还能够进行排序,可以通过实现Comparator(比较器)来实现排序。

四、Queue

Java中的基本容器知识你真的了解过吗?

 

1、BlockingQueue

多线程环境下,经常使用的“生产者-消费者”模式,负责生产的线程将是生产的资源放入一个共享容器,并且由消费者取出。那么这个容器一般可以是Queue或者Stack。阻塞队列可以在仓库满时把生产线程挂起,在仓库为空时把消费者线程挂起。

 

2、ArrayBlockingQueue

ArrayBlockingQueue是基于数组实现的有界阻塞队列,满足FIFO的特性,是一个典型的有界缓冲,数组大小是固定的,确定就无法再更改了。

 

3、LinkedBlockingQueue

LinkedBlockingQueue是基于链表实现的,且可以指定容量,具有两份重入锁,对应取值与存值。

 

4、PriorityBlockingQueue

PriorityBlockingQueue不是一个FIFO队列,需要提供一个Comparator,或者Comparable接口,队头元素为最小的元素。它也是用数组实现的最小堆结构。

发文不易,恳请大佬们高抬贵手!


点赞:随手点赞是种美德,是大佬们对于本人创作的认可!


评论:往来无白丁,是你我交流的的开始!


收藏:愿君多采撷,是大佬们对在下的赞赏!

 

到了这里,关于Java中的基本容器知识你真的了解过吗?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 探索Java通信面试的奥秘:揭秘IO模型、选择器和网络协议,了解面试中的必备知识点!

    TCP(Transmission Control Protocol)是一种面向连接的可靠的传输协议。类似于打电话,它通过建立一个连接和保证数据的可靠传输来提高通信的可靠性。然而,由于要确保数据的可靠性,TCP协议会增加网络负担,效率相对较低。 UDP(User Datagram Protocol)是一种无连接、不可靠的传输

    2024年02月15日
    浏览(37)
  • 【面试题】关于JavaScript实现继承的六大方案,你都了解过吗?

    ​ 前后端面试题库 (面试必备) 推荐:★★★★★ 地址:前端面试题库  web前端面试题库 VS java后端面试题库大全 面试官:“你说说 JavaScript 中实现继承有哪几种方法?” 紧张的萌新:“额,class 中用 extends 实现继承,然后...没了...” 面试官:“...” ······ 想必绝大

    2024年02月02日
    浏览(32)
  • 45了解容器编排工具 Kubernetes 的基本概念和应用,包括 Pod、Service

    Kubernetes 是一种用于自动部署、扩展和管理容器化应用程序的开源容器编排工具。它可以轻松地管理和编排应用程序容器,确保它们在大规模的云环境中高效、可靠地运行。本教程将介绍 Kubernetes 的基本概念和应用,包括 Pod 和 Service。 Pod 是 Kubernetes 中最小的可部署对象,是

    2024年02月08日
    浏览(28)
  • 5、电子元器件基础知识大全,一文了解所有基本元器件

    一、电阻 电阻在电路中用“R”加数字表示,如:R15表示编号为15的电阻。电阻在电路中的 主要作用为分流、限流、分压、偏置、滤波(与电容器组合使用)和阻抗匹配等。 1.参数识别:电阻的单位为欧姆(Ω),倍率单位有:千欧(KΩ),兆欧(MΩ)等。换算方法是: 1兆欧=1000干欧=000000欧电

    2024年02月11日
    浏览(32)
  • HTTP基础:学习HTTP协议的基本知识,了解请求和响应的过程

    HTTP(Hypertext Transfer Protocol,超文本传输协议)是一种用于传输超媒体文档(如HTML)的应用层协议,它是Web中最基本的协议。 HTTP请求和响应都是由客户端和服务器之间进行的。 一个完整的HTTP请求由以下几个部分组成: 请求行:包括请求方法(GET、POST等)、请求的URI和HTTP协

    2024年02月12日
    浏览(33)
  • ChatGPT中的Token:了解聊天模型的基本单位

    ✍创作者:全栈弄潮儿 🏡 个人主页: 全栈弄潮儿的个人主页 🏙️ 个人社区,欢迎你的加入:全栈弄潮儿的个人社区 📙 专栏地址:AI大模型 在ChatGPT中,\\\"token\\\"是指对文本输入进行分割和编码的最小单位。在英语中,一个token通常是一个单词或一个标点符号。然而,对于其

    2024年02月15日
    浏览(26)
  • 【Java基础】Java容器相关知识小结

    目录 0. 前言 1. Collection接口 1.1. List接口 1.1.1. ArrayList 1.1.2. LinkedList 1.1.3. Vector 1.1.4. Stack 1.2. Set接口 1.2.1. HashSet 1.2.2. LinkedHashSet 1.2.3. TreeSet 1.3. Queue接口 1.3.1. PriorityQueue 1.3.2. LinkedList 2. Map接口 2.1. HashMap 2.2. TreeMap 2.3. LinkedHashMap 3.常见用法——增/删/改/查/排序/容量 后记 参考文章

    2024年02月05日
    浏览(71)
  • java之路——带你了解Hibernate与基本过程

    Hibernate框架的发展可以追溯到2001年,它在过去的几年里获得了广泛的应用和持续的发展。 其中的发展演变: 初期版本(2001-2006年): Hibernate框架最早由Gavin King创建,目的是为了简化Java应用程序与关系数据库之间的数据交互。在这个阶段,Hibernate开始以一种简单但强大的方

    2024年02月12日
    浏览(30)
  • 低代码,你真的了解吗?真的那么火吗?

    近几年来,在国内讨论低代码的场合越来越多,任何技术峰会,少不了会提及低代码甚至零代码。 简单地说,低代码平台是一种软件开发工具,旨在让用户使用最少的编码知识和手动编程工作来构建应用程序。这些平台提供了图形化的用户界面和可视化工具,使用户能够通过

    2024年02月03日
    浏览(34)
  • 一文带你彻底了解java 网络编程的基本概念

    主题:探索Java网络编程:构建连接世界的桥梁 作者:Stevedash 发布日期:2023年8月11日 15点18分 (PS:这一篇文章作为总章,今天着重讲“Socket套接字编程”这里的知识,其他模块的知识,后续补上,拆分成单独章节来慢慢完善该文,并且后面会附带上其他文章的链接,会持续

    2024年02月13日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包