Java集合常见问题

主图==========

目录

Java集合

  • 1.前言
  • 2.集合
  • 3.Collection接口类
    • 3.1 List接口
      • 3.1.1 ArrayList(常用)
      • 3.1.2 LinkedList(常用)
      • 3.1.3 Vector(不常用)
    • 3.2 Set接口
      • 3.2.1 HashSet(常用)
      • 3.2.2 LinkedHashSet(不常用)
      • 3.2.3 TreeSet(常用)
    • 3.3 Queue接口
  • 4.Map接口类
    • 4.1 HashMap接口
    • 4.2 LinkedHashMap接口
    • 4.3 TreeMap接口
  • 5.总结
  • 参考


文章所属专区 超链接


1.前言

Java集合是Java语言中用于存储、组织数据的一组工具,它们可以帮助我们更有效地进行编程。Java集合大致可以分为以下四种类型:
List:有序集合,可以存储重复的元素3。常见的实现有ArrayList和LinkedList3。
Set:无序集合,只能存储一次,不能重复元素3。常见的实现有HashSet、LinkedHashSet和TreeSet3。
Map:键值对(key-value)的集合,键不能重复,值可以重复3。常见的实现有HashMap、LinkedHashMap和TreeMap。
Queue:先进行元素添加,后进行元素删除的队列4。常见的实现有PriorityQueue和LinkedList4。

2.集合

集合也叫容器,主要由两大类派生,一类是操作单个元素的Collection接口,另外一类是操作键值对的Map接口。其中Collection包含了List , Set ,Queue

3.Collection接口类

在这里插入图片描述

3.1 List接口

有序集合,可存储有序的可重复的元素。

3.1.1 ArrayList(常用)

底层数据结构是数组,查询快,增删慢,线程不安全,效率高。

3.1.2 LinkedList(常用)

底层数据结构是链表,查询慢,增删快,线程不安全,效率高。

3.1.3 Vector(不常用)

底层数据结构是数组,查询快,增删慢,线程安全,效率低。

3.2 Set接口

无序集合,存储无序的不可重复的元素。

3.2.1 HashSet(常用)

底层数据结构是哈希表(数组),元素无序且唯一(是否重写hashCode()和equals()方法来保证的)线程不安全,效率高。

具体实现唯一性的比较过程:存储元素首先会使用hash()算法函数生成一个int类型hashCode散列值,然后已经的所存储的元素的hashCode值比较,如果hashCode不相等,则所存储的两个对象一定不相等,此时存储当前的新的hashCode值处的元素对象;如果hashCode相等,存储元素的对象还是不一定相等,此时会调用equals()方法判断两个对象的内容是否相等,如果内容相等,那么就是同一个对象,无需存储;如果比较的内容不相等,那么就是不同的对象,就该存储了,此时就要采用哈希的解决地址冲突算法,在当前hashCode值处类似一个新的链表, 在同一个hashCode值的后面存储存储不同的对象,这样就保证了元素的唯一性。
Set的实现类的集合对象中不能够有重复元素,HashSet也一样他是使用了一种标识来确定元素的不重复,HashSet用一种算法来保证HashSet中的元素是不重复的, HashSet采用哈希算法,底层用数组存储数据。默认初始化容量16,加载因子0.75。
Object类中的hashCode()的方法是所有子类都会继承这个方法,这个方法会用Hash算法算出一个Hash(哈希)码值返回,HashSet会用Hash码值去和数组长度取模, 模(这个模就是对象要存放在数组中的位置)相同时才会判断数组中的元素和要加入的对象的内容是否相同,如果不同才会添加进去。

3.2.2 LinkedHashSet(不常用)

底层数据结构是链表和哈希表,链表保证了元素的顺序与存储顺序一致,哈希表保证了元素的唯一性,线程不安全,效率高。

3.2.3 TreeSet(常用)

底层数据结构是二叉树,元素有序且唯一,唯一性同样需要重写hashCode和equals()方法,二叉树结构保证了元素的有序性。

3.3 Queue接口

有序集合,存储有序的可重复的元素。

4.Map接口类

键值对(key-value)的集合,键不能重复,值可以重复。
在这里插入图片描述

4.1 HashMap接口

4.2 LinkedHashMap接口

4.3 TreeMap接口

5.总结

在这里插入图片描述

数据结构
ArrayXxx:底层数据结构是数组,查询快,增删慢
LinkedXxx:底层数据结构是链表,查询慢,增删快
HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()和equals()
TreeXxx:底层数据结构是二叉树。两种方式排序:自然排序和比较器排序

参考

Java集合常见面试题总结
菜鸟教程-集合
java集合超详解
java集合对比汇总

给个三连吧 谢谢谢谢谢谢了
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

万兆光模块:单模光纤和多模光纤的选择指南

随着网络技术的不断发展,数据传输的速度也越来越快。在这样的背景下,万兆光模块逐渐成为了数据中心和网络设备的必备组件。而在选择万兆光模块时,用户通常会面临一个难题:选择单模还是多模?本文易天光通信将为您解析。…

Web端功能测试的测试方向有哪些?

一、功能测试 1.1链接测试 链接是web应用系统的一个很重要的特征,主要是用于页面之间切换跳转,指导用户去一些不知道地址的页面的主要手段,链接测试一般关注三点: 1)链接是否按照既定指示那样,确实链接到…

多模块项目打包lib成aar

首先 我们要理解原理lib和app的gradle配置区别 plugins { id com.android.application } plugins { id "com.android.library" } assembleDebug(assembleRelease)两者分别生成是apk 和aar 对于app来说有包名、有版本号而library没有。 接…

WordPress免费插件大全清单【2023最新】

WordPress已经成为全球范围内最受欢迎的网站建设平台之一。要让您的WordPress网站更具功能性、效率性,并提供卓越的用户体验,插件的选择与使用变得至关重要。 WordPress插件的作用 我们先理解一下插件在WordPress生态系统中的作用。插件是一种能够为Wo…

【shell】

shell 一、shell简介二、shell脚本的执行方式三、shell变量3.1 shell变量介绍3.2 shell变量的定义3.1.1 基本语法3.2.2 定义变量的规则3.2.3 将命令的返回值赋予变量 四、环境变量的设置4.1 基本语法: 五、位置参数变量5.1 基本介绍5.2 基本语法 六、预定义变量6.1 …

C++ Primer 第十六章 模板与泛型编程 重点解读

文章目录 1 定义模板1.1 类模板成员函数的实例化:1.2 在类代码内简化模板类名的使用:1.3 令模板自己的类型参数成为友元(C11)1.4 模板类型别名1.4.1 typedef1.4.2 为模板定义类型别名(C11) 1.5 函数模板与类模板的区别1.6 使用类的…

【Vulnhub 靶场】【CEREAL: 1】【困难】【20210529】

1、环境介绍 靶场介绍:https://www.vulnhub.com/entry/cereal-1,703/ 靶场下载:https://download.vulnhub.com/cereal/Cereal.ova 靶场难度:困难 发布日期:2021年5月29日 文件大小:1.1 GB 靶场作者:Thomas…

外包干了4年,技术退步明显...

先说情况,大专毕业,18年通过校招进入湖南某软件公司,干了接近4年的功能测试,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企业干了四年的功能测试&#xf…

Rocky Linux 9.3 为 PowerPC 64 位带回云和容器镜像

RHEL 克隆版 Rocky Linux 9.3 今天发布了,作为红帽企业 Linux 发行版 CentOS Stream 和 Red Hat Enterprise Linux 的免费替代版本,现在可供下载。 Rocky Linux 9.3 是在 Rocky Linux 9.2 发布 6 个月之后发布的,它带回了 PowerPC 64 位 Lit…

如何正确使用高防IP?高防IP使用教程

随着网络攻击的日益猖獗,越来越多的企业开始重视网络安全,并选择使用高防IP来保护自己的服务器。但是,使用高防IP并不是简单的开通服务就能够达到防护效果的,它需要正确的使用方法才能够发挥出应有的作用。 本文将向大家介绍如何正…

公有云迁移研究——AWS DMS

大纲 1 什么是DMS2 DMS的作用3 DMS在迁移的时候都做些什么4 在使用DMS的时候我们需要做些什么5 操作5.1 创建两个数据库终端节点5.2 创建迁移任务 6 可能遇到的问题7 总结 在本地机房或其他云往AWS上做迁移时,往往会遇到数据库迁移的任务。如果数据量不是特别大&…

一篇吃透大厂面试题,2024找工作一帆风顺。

🏆作者简介,普修罗双战士,一直追求不断学习和成长,在技术的道路上持续探索和实践。 🏆多年互联网行业从业经验,历任核心研发工程师,项目技术负责人。 🎉欢迎 👍点赞✍评论…

MySQL -DDL 及表类型

DDL 创建数据库 CREATE DATABASE [IF NOT EXISTS] db_name [create_specification [, create_specification] ...] create_specification:[DEFAULT] CHARACTER SET charset_name [DEFAULT] COLLATE collation_name 1.CHARACTER SET&#xff1a…

Python查看文件列表

os.listdir 是 Python 的一个内置函数,用于列出指定目录中的所有文件和子目录。它接受一个字符串参数,即要列出内容的目录的路径。 列出当前工作目录中的所有文件和子目录 files_and_dirs os.listdir() print(files_and_dirs) 列出指定目录中的所…

支付宝沙箱支付

1. 二维码 1.1 什么是二维码: ​ 二维码又称QR Code,QR全称Quick Response,是一个近几年来移动设备上超流行的一种编码方式,它比传统的Bar Code条形码能存更多的信息,也能表示更多的数据类型。 ​ 二维条码/二维码&…

LeetCode437.路径总和III

看完题目我就拿直接用递归写了如下代码: class Solution {private int ans;public int pathSum(TreeNode root, int targetSum) {ans 0;dfs(root, targetSum, 0);return ans;}public void dfs(TreeNode root, int targetSum, int sum){if(root null)return;sum r…

深入解析JVM内存结构:Metaspace、堆与垃圾收集器

🚀 作者主页: 有来技术 🔥 开源项目: youlai-mall 🍃 vue3-element-admin 🍃 youlai-boot 🌺 仓库主页: Gitee 💫 Github 💫 GitCode 💖 欢迎点赞…

Mysql进阶-事务锁

前置知识-事务 事务简介 事务 是一组操作的集合,它是一个不可分割的工作单位,事务会把所有的操作作为一个整体一起向系统提交或撤销操作请求,即这些操作要么同时成功,要么同时失败。 就比如: 张三给李四转账1000块钱&#xff0…

龙迅#LT8311X3 USB中继器应用描述!

1. 概述 LT8311X3是一款USB 2.0高速信号中继器,用于补偿ISI引起的高速信号衰减。通过外部下拉电阻器选择的编程补偿增益有助于提高 USB 2.0 高速信号质量并通过 CTS 测试。 2. 特点 • 兼容 USB 2.0、OTG 2.0 和 BC 1.2• 支持 HS、FS、LS 信令 • 自动检测和补偿 U…

Python+Requests模块添加cookie

请求中添加cookies 对于某些网站,登录然后从浏览器中获取cookies,以后就可以直接拿着cookie登录了,无需输入用户 名密码。 一、在参数中添加cookie 在发送请求时使用cookies 代码示例: import requests # 1,在参数…