【Java面试】Java基础-集合相关知识点(1)

news2025/4/28 2:42:39

文章目录

    • 1. 集合有哪些类?
    • 2. ArrayList
    • 3. Map主要有哪些类?

容器主要包括 Collection 和 Map 两种,Collection 存储着对象的集合,而 Map 存储着键值对(两个对象)的映射表。

1. 集合有哪些类?

集合是一组相关对象的容器,用于存储、操作和处理数据。Java集合框架提供了一组接口和实现类来表示不同类型的集合。以下是Java集合框架中常见的集合类:

  • List
    List是一个有序的集合,可以包含重复的元素。Java提供了多个实现List接口的类,如ArrayList、LinkedList、Vector等。

  • Set
    Set是一个不允许重复元素的集合,元素没有固定的顺序。Java提供了多个实现Set接口的类,如HashSet、TreeSet、LinkedHashSet等。

  • Queue
    Queue是一个队列,支持先进先出(FIFO)的操作。Java提供了多个实现Queue接口的类,如ArrayDeque、LinkedList、PriorityQueue等。

  • Map
    Map是一个键值对的映射,每个键对应一个值。Java提供了多个实现Map接口的类,如HashMap、TreeMap、LinkedHashMap等。

  • Stack
    Stack是一个后进先出(LIFO)的堆栈,继承自Vector类。

  • PriorityQueue
    PriorityQueue是一个优先级队列,元素按照自然排序或指定的比较器排序。它实现了Queue接口。

2. ArrayList

在这里插入图片描述
ArrayList内部使用一个Object类型的数组来存储元素。初始时,ArrayList创建一个长度为0的数组。当向ArrayList中添加元素时,会先判断数组是否已满。如果数组已满,则会创建一个新的数组,并将原数组中的元素复制到新数组中,同时将新元素添加到新数组的末尾。新数组的长度一般是原数组的1.5倍。

ArrayList会根据需要自动扩容。当添加元素时,如果当前数组已满,则会创建一个新数组,并将原数组中的元素复制到新数组中,同时将新元素添加到新数组的末尾。新数组的长度一般是原数组的1.5倍。由于数组是在内存中连续存储的,因此当数组需要扩容时,需要先创建一个新的数组,将原数组中的元素复制到新数组中,这个过程比较耗时。为了减少扩容的次数,一般会在创建ArrayList对象时,指定一个初始容量,以避免过多的扩容操作。

ArrayList的get()和set()方法的时间复杂度为O(1),即常数时间。但是,向ArrayList中插入或删除元素的操作的时间复杂度为O(n),其中n为元素的个数,因为需要移动数组中的元素。

总的来说,ArrayList是一个高效的动态数组实现类,适合于需要快速访问元素,但不需要频繁插入或删除元素的场景。

3. Map主要有哪些类?

在这里插入图片描述

Map是一种键值对的集合,用于存储一组相关的对象。Java提供了多个实现Map接口的类,每个类都有不同的特点和用途。以下是Java中常用的Map类:

  • HashMap
    HashMap是一种散列表实现,它通过哈希函数将键映射到存储桶中,然后在存储桶中查找值。HashMap允许null键和null值,但不保证元素的顺序。HashMap是非线程安全的。
  • TreeMap
    TreeMap是一种基于红黑树实现的有序映射。它保证了元素的顺序,并提供了一些有序的操作,如firstKey()、lastKey()、headMap()、tailMap()和subMap()等。TreeMap不允许null键,但允许null值。TreeMap是非线程安全的。
  • LinkedHashMap
    LinkedHashMap是HashMap的一个子类,它保持元素插入的顺序,也可以保持元素访问的顺序。LinkedHashMap提供了一些有序的操作,如get()、put()和remove()等。LinkedHashMap允许null键和null值。LinkedHashMap是非线程安全的。
  • Hashtable
    Hashtable是一种基于哈希表的实现,类似于HashMap,但是Hashtable是线程安全的。Hashtable不允许null键和null值。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509383.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ThreadLocal底层源码解析

线程隔离,保证多线性访问安全 每个线程拿到的值私有,相互不干扰 ThreadLocal是JDK包提供的,它提供线程本地变量,如果创建一乐ThreadLocal变量,那么访问这个变量的每个线程都会有这个变量的一个副本,在实际…

跳槽? 我只想多赚点罢了

前言 五一过后也就也就意味着今年的金三银四跳槽季正式结束了,不知道大家是否拿到了offer,面对金三银四的招聘旺季,如果没有精心准备那笔者认为那是对自己不负责任;就我们测试员来说,多数的公司总体上面试都是以自我介…

表的存储原理(数据库)

目录 一、内部存储概述 二、 数据行(记录)结构 1、定长记录 2、变长记录 一、内部存储概述 表是有关某个特定实例的数据集合,在关系数据库中处于核心地位。 创建一个表,就会有一行或多行插入到用来管理这个表的多个系统表里。…

如何压缩照片大小不大于200k

如何压缩照片大小不大于200k?有时候需要压缩照片大小不大于200k是因为在一些场景下,上传或传输大文件会受到限制,例如通过电子邮件发送、上传到云存储空间等等。在这种情况下,压缩照片可以让图片更容易地传输和分享,并…

基于simulink进行音频波束成形系统的多核仿真

一、前言 此示例展示了 Simulink中的音频波束成形系统仿真模型如何使用数据流域提高性能。它使用 Simulink 中的数据流域自动将通信系统的数据驱动部分划分为多个线程,从而通过在桌面的多个内核上执行模拟来提高仿真的性能。 二、介绍 数据流执行域允许您在计算密集…

Docker Overlay2占用大量磁盘空间解决

问题 最近项目的jenkins编译时报错 FATAL: Unable to produce a script filejava.io.IOException: No space left on deviceat java.io.UnixFileSystem.createFileExclusively(Native Method)at java.io.File.createTempFile(File.java:2024)at hudson.FilePath$CreateTextTem…

#vue项目冗余请求处理#http://localhost:8080/sockjs-node/info?t=1683604231866

目录 前言一、为什么会出现这个请求?二、解决方法1.修改源码 总结 前言 提示:本文要记录的大概内容: 在我的vue项目中,开发环境下,一直重复发请求:http://localhost:8080/sockjs-node/info?t16836042318…

《花雕学AI》33:如何用XMind制作AI思维导图、鱼骨图和组织结构图

思维导图是一种有效的思维工具,它可以帮助我们整理信息,激发创意,提高效率。思维导图是一种以中心主题为核心,以分支结构为形式,以关键词和图像为内容的图形表示法。它可以让我们一目了然地看到知识的层次和逻辑&#…

手把手教你Vue+ECharts+高德地图API实现天气预报数据可视化

前言 所谓数据可视化,我们可以理解为从宏观角度来看一眼就能看出来整个数据的占比,走向。对于数据可视化,很多互联网公司是很看重这一块的,包括大厂;就比如阿里的淘宝,双十一的时候往往就需要将消费者的一…

论文浅尝 | 句法丰富的判别训练:一种有效的开放信息抽取方法

笔记整理:杜苗增,东南大学硕士,研究方向为多模态信息抽取 链接:https://aclanthology.org/2022.emnlp-main.401.pdf 动机 开放信息提取(OIE)是信息提取(IE)的一个分支,专注于从非结构化自然语言文本中提取结构化信息。…

论文笔记_2017_RS_迈向高清 3D 城市测绘:基于道路特征的移动测绘系统和航空影像配准

基本情况 出处:Javanmardi M, Javanmardi E, Gu Y, et al. Towards high-definition 3D urban mapping: Road feature-based registration of mobile mapping systems and aerial imagery[J]. Remote Sensing, 2017, 9(10): 975.原文地址:Remote Sensin…

Postman生成代码的小技巧

描述 你还在使用postman吗?你还是一条条复制参数吗?你还是手动录入数据吗?对于一些不经常使用postman的人来说,这个小技巧可以帮助你导入请求,以及转换成开发语言。 教程 1 抓包接口 以CSDN热榜为例,直…

数据可视化二、综合项目

零、文章目录 数据可视化二、综合项目 1、项目概述 (1)项目展示 (2)项目目的 市场需求:应对现在数据可视化的趋势,越来越多企业需要在很多场景(营销数据,生产数据,用户数据)下使…

Fiddler 微信小程序抓图教程(傻瓜式|汉化版|狗看了都直呼内行)

前言 本篇文章主要给大家详细讲解如何用Fiddler爬取微信小程序的图片,内容图文并茂,流程非常简单,我们开始吧。 目录 获取软件并打开点击工具设置相关代理如何抓图答疑总结 一、获取软件并打开 1、通过百度网盘下载获取安装包(链接是永久的…

二十三种设计模式第六篇--建造者模式(也叫生成器)

建造者模式(Builder Pattern)是使用多个简单的对象一步一步(顺序构建)构建成一个复杂的对象, 这种类型的设计模式属于创建型模式,他提供了一种创建对象的最佳方式。 一个Builder类会一步一步构建成为最终的…

Windows10 WIFI蓝牙图标消失,网卡驱动出现感叹号等无法上网的情况解决方案

Windows10出现WIFI蓝牙图标消失,网卡驱动出现感叹号等无法上网的情况解决方案_飞机跑不快的博客-CSDN博客 问题描述 我的电脑是戴尔游匣G15 5511,由于静电保护的原因,不得不拆开电脑后盖拔掉电池,释放静电,释放完成后…

OpenPCDet系列 | 6.PointPillars模型分类、回归、角度损失的构建

文章目录 模型损失计算1. 分类损失构建1.1 分类损失函数:SigmoidFocalClassificationLoss2. 回归损失构建2.1 回归损失函数:WeightedSmoothL1Loss3. 角度损失构建3.1 角度损失函数:WeightedCrossEntropyLoss4. 总结模型损失计算 在进行anchor的正负样本分配后,具体来说就是…

【运动规划算法项目实战】专栏介绍

文章目录 前言1. 路径规划中常用的插值方法2. 路径规划中常用的抽稀3. 如何加载csv文件的路径信息4. 如何在栅格地图中实现A*算法5. 如何在栅格地图中实现Dijkstra算法6. 如何实现简单的状态机7. 如何实现机器人多目标点导航8. Voronoi图]9. 八叉树地图10. 如何实现三次样条插值…

网安笔记05 SHA

SHA Hash函数 定义 任意长度的数据M变换为定长码h h H A S H ( M ) h H ( M ) h HASH(M)\quad h H(M) hHASH(M)hH(M) 实用性: 给定M,计算h时高效的 安全性: 单向性 给出h,反向计算原文x时不可行的,否则截取…