Java 集合 List、Set、Map的特性、区别、用法

Java集合类的特性 关于Java的集合类面试问题和并发包的几个集合类比较,面试的同学可以看看 立即下载

集合框架:也就是集合体系   集合里面存储的都是对象的地址(引用)

集合框架的顶层定义的是该体系的共性基本功能

数组和集合的区别:

数组时固定长度   集合是可变长度

数组中只能存储同一类型的数据和对象

集合可以存储任意类型的对象

数组可以存储基本数据类型数据  集合只能存储对象。

Collection

   |---List:该集合的元素有序(存储的顺心和取出的顺心是一致的),

              该集合中的元素都有索引,该集合中的元素可以重复

   |---Set:该集合是无序的,里面的元素是不可以重复的。



List :有序 

存储的内容有索引、可重复

List集合,判断元素是否相同,依据是equals方法。contains方法和remove方法都依据是equals方法来判断元素是否相同。


|----ArrayList:底层数据结构是数组结构.是线程不同步的(不安全的)

不同步、查询速度很快,但增删很慢


|----LinkedList:底层数据结构式链表结构。对元素的增删速度很快。但是查询速度很慢  

线程是不同步的


|----Vector:底层数据结构也是数组结构。是线程同步的(安全的) 

线程同步,效率低,被ArrayList替代了



Set :

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

Set集合中的方法和Collection是一致的,他的取出方式只有一种,迭代器


|----HashSet:底层数据结构是哈希表,该集合是线程不同步的。

             HashSet集合是如何保证元素唯一性的呢?

通过元素的hashCode方法和equals方法来完成的唯一性的判断

如果hashCode值相同,在继续判断元素的equals方法是否为真

如果hashCode值不相同,就不会判断equals方法

HashSet的contains和remove依据都是hashCode方法,如果该方法返回值相同,才判断equals方法

|----TreeSet:它可以给Set集合中的元素进行指定方式的排序。

             保证元素唯一性的方式:通过比较的结果是否为0.

底层数据结构是二叉树

排序的第一种方式:让元素具备比较性,只要让元素实现Comparable接口,覆盖compareTo方法即可

但是,如果元素自身不具备比较性,或者元素自身具备的比较性不是所需要的,比如学生的自然排序是按照年龄排序,现在想要按照学生的姓名排序,还不可以改变原有代码,这是怎么办呢

排序的第二种方式:这时可以让集合自身具备比较性。可以定义一个类实现Comparator接口,覆盖compare方法将该Comparator接口子类对象作为参数传递给TreeSet集合构造函数,该对象就是比较器。


迭代器:所有collection集合共性的取出方式.

在使用时,通过两个方法来完成:

1, 判断容器中是否有元素----hasNext

2, 取出元素-----next


例:

ArrayList al = new ArrayList();
al.add("hh");
al.add("aa");
for(Iterator it =al.iterator();it..hasNext();){
	String s =(String)it.next();
	System.out.println(s);
}


Map:一次存一对。一个是键,一个是值。键与值之间有对应关系,必须保证键的唯一性。

|--HashMap:底层是哈希表,线程是不同步的,允许使用 null 值和 null 键。

|--Hashtable:底层是哈希表,线程是同步的,被HashMap替代。不允许null键,null值。

|--TreeMap:底层是二叉树数据结构,线程是不同步的。可以被Map集合中的键进行排序。

Map集合取出元素的原理就是:将map集合转成Set集合,在通过迭代器。

keySet():将map中的键取出存储到Set集合中,在通过迭代器,在迭代过程中,

再通过map集合的get(key)方法获取键对应的值。

Map:存储键值对,保证键的唯一性。

Map常见的功能:

1, 添加元素:

value put(key,value):存储键值,返回键上一次关联的值,如果没有为null。

putAll(map):存储一堆键值。

2, 删除元素:

value remove(key);

clear();

3, 判断元素:

containsKey(key);

containsValue(value):

isEmpty();

4获取元素:

value get(key): 通过键获取值。如果获取的值为null,可以用来判断该键否是存在。

Set<key> keySet(): 获取map值所有的键,并将键存入Set结合。在通过迭代器取出的同时,通过map的get方法获取键对应的值。

Set<Map.Entry<key,value>> entrySet(): 将map中的键值关系取出,封装成的Map.Entry对象。将Map.Entry对象存入到Set集合中。通过迭代器取出时,可以使用Map.Entry对象的getKey(),getValue()方法获取键和值。

Collection<Value> values(): 获取map中的所有值。并存储Collection集合。


Map和Collection的区别:

Map是双列集合,Collection是单列集合。

Map存储元素是一对,键值对。Collection是一个。

Map存储元素使用put方法。Collection使用add方法。

Map取出所有元素,是将Map转成Set,在迭代。Collection直接使用迭代器。

什么时候使用Map集合呢?

当分析时对象间出现映射关系时,要首先想到map集合。

ROS激光雷达动态避障算法优化(C++实战) 本文深入探讨了ROS激光雷达动态避障算法的C++实战优化。针对动态环境的核心挑战,文章系统性地介绍了从激光数据预处理(降噪、瘦身)、动态障碍物检测与跟踪,到基于动态窗口法(DWA)的智能决策与调优的全流程。重点分享了如何将障碍物速度预测融入DWA打分函数,以实现更安全、流畅的避障,并提供了工程架构、性能优化及真机调试的实用建议。 阅读详情

相关推荐

从零开始:用ZEMAX设计双高斯照相物镜的完整流程(附55mm焦距实例)

本文详细介绍了使用ZEMAX设计双高斯照相物镜的完整流程,特别针对55mm焦距实例进行了深入解析。从初始结构选择、参数设置到优化策略和像质分析,逐步指导读者掌握这一经典光学设计方法。通过具体实例展示了如何实现卓越的像差校正,适用于35mm相机标准镜头等应用场景。

onion的博客 706

Java中的Set、List、Map的区别及主要实现类方法

- Set用于存储不重复的元素,List用于存储有序的元素序列,Map用于存储键值对映射关系。 - Set和List都是集合,而Map是映射。 - Set和Map中的元素没有特定的顺序,而List中的元素是有序的。

玖柒IT 1591

美亚杯2023参赛全攻略:从检材下载到Veracrypt挂载的保姆级教程

本文提供美亚杯2023电子数据取证竞赛的完整参赛指南,重点解析从检材下载、Veracrypt挂载到实战取证的保姆级流程。针对新手常见误区,详细说明两套密码(ZIP解压密码与Veracrypt挂载密码)的区别与正确使用方法,并分享赛前环境搭建、赛中高效分析及赛后报告撰写的核心技巧,帮助参赛者系统备赛,规避基础错误。

y9z0a1b的博客 1079

Java常用集合之Set

Java常用集合之Set

m0_62609939的博客 4787

SAP 针对不同行业(制造业、零售业、金融业)推出了专属的云解决方案,以下是各行业的核心方案与特点

SAP推出行业专属云解决方案:制造业(SAP Digital Manufacturing Cloud)提供AI排产与质量预警,降低缺陷率;零售业(S/4HANA Cloud零售版)实现AI预测补货与全渠道库存同步,减少浪费;金融业(Business ByDesign)支持合规自动化与实时风控,降低审计成本。各方案均采用云原生架构,典型案例显示实施效果显著。

金牌架构师 493

基于Python的彭博社新闻高效爬取实战:最新技术与完整代码解析

本文将详细介绍如何使用Python最新技术构建一个高效的彭博社(Bloomberg)新闻爬虫系统。我们将从爬虫基础概念讲起,逐步深入到高级反反爬技术、异步抓取、数据解析与存储等核心环节。文章包含完整的代码实现,采用最新的aiohttp、Playwright等技术栈,并特别关注法律合规性和数据质量保障。通过本文,读者将掌握一个完整的商业新闻爬虫开发流程,并能够根据实际需求进行定制化开发。关键词:Python爬虫、彭博社、Bloomberg、新闻采集、aiohttp、Playwright、反反爬技术。

2201_76125261的博客 1503

java 数组set集合的区别_集合(list、set和map)和数组区别

集合:用来存放对象的一种容器(可以存储基本数据类型),长度固定,不适合对象数量未知的情况下使用。数组:可以存放多种对象类型的容器(只能存储对象),长度可变。集合和数组的区别:1、数组声明了数据类型,然后就只能存储那一种数据类型。集合能存放多种(不加泛型时,类型是Object)。2、数组是静态的,一个数组实例具有固定的大小,一旦创建了就无法改变容量了。集合是动态扩展容量的,可以根据需要动态改变大小。...

weixin_35949064的博客 896

【DEIM创新改进】独家下采样创新改进篇 | ECCV 2026 | DEIM 引入FSD-Down频域-空间动态下采样,在下采样过程中保留小目标的高频信息、助力小目标检测、遥感小目标检测有效涨点

🔥本文提出了一种名为FSD-Down的频域-空间动态下采样模块,用于改进DEIM网络模型在小目标检测中的性能。FSD-Down通过小波分解显式保留低频语义和高频细节,结合分组卷积、动态通道权重和可学习缩放因子,自适应强化目标边缘与纹理特征。该模块能有效减轻传统下采样造成的频率混叠和细节丢失,提升对小目标、密集目标和低对比度目标的检测能力。实验表明,FSD-Down计算开销可控,在保持实时性的同时显著提升检测精度,特别是在VisDrone和AITODv2数据集上对小目标的检测性能提升显著。

Ai缝合怪、助力小伙伴高效发论文 82

JAVA集合进阶(Set、Map集合)

使用迭代器遍历集合时,可能存在并发修改异常。我们先把这个异常用代码演示出来,再解释一下为什么会有这个异常产生list.add("王麻子");list.add("小李子");list.add("李爱花");list.add("张全蛋");list.add("晓李");list.add("李玉刚");// [王麻子, 小李子, 李爱花, 张全蛋, 晓李, 李玉刚]​//需求:找出集合中带"李"字的姓名,并从集合中删除if(name.contains("李")){

是程序喵呀 1583

SwinTransformer 改进:SSPCAB模块(2024最新改进方法)

SSPCAB(Spatial Pyramid Pooling with Channel Attention Block)是2024年提出的一种新型神经网络架构改进方法,专注于在保持高精度的同时显著降低计算复杂度和参数量。该方法通过创新的空间金字塔池化与通道注意力机制的结合,实现了网络结构的紧凑化和运算效率的大幅提升。核心创新点1. 混合空间金字塔池化(Hybrid Spatial Pyramid Pooling, HSPP)多尺度动态核池化:根据输入特征图尺寸动态调整池化核大小和步长交叉级联结构。

Henry的博客 1309

YOLO26 改进 - 注意力机制 | Mask Attention掩码注意力,可学习掩码矩阵破解低分辨率特征提取难题 | 2025 预印

本文提出了用于低分辨率图像分割的MaskAttn - UNet框架,并将其核心的掩码注意力机制集成到YOLO26中。传统U - Net类模型难以捕捉全局关联,Transformer类模型计算量大,而掩码注意力机制通过可学习的掩码,让模型选择性关注重要区域,融合了卷积的局部效率和注意力的全局视野。其工作流程包括特征适配、掩码生成、定向注意力计算和特征融合。我们将掩码注意力机制代码集成到YOLO26中。

魔改工程师的博客 835

JAVA中几种集合(List、Set和Map)的区别

Set对每个对象只接受一次,并使用自己内部的排序方法(通常,你只关心某个元素是否属于Set,而不关心它的顺序--否则应该使用List)。Map同样对每个元素保存一份,但这是基于"键"的,Map也有内置的排序,因而不关心元素添加的顺序。如果添加元素的顺序对你很重要,应该使用 LinkedHashSet或者LinkedHashMap. 总结:List有顺序有重复没有排序,set无重复有排序,map的k

menghuannvxia的专栏 466

Explorer.exe系统错误,电脑重启后刚开始一段时间正常,过一会桌面任务栏就卡死,可以打开任务管理器

联想E14Win10专业版。

本博客,博文仅代表个人操作经验,不能完全解决你的问题,仅供参考,佛系回复。 8053

JAVA中的Collection,List,Set,Map集合的使用与万字详解

在JAVA.until包中提供了一些集合,其中List集合的List接口和Set接口实现了Collection接口,这些集合被称为容器。集合和数组不同,数组的长度是固定的,集合的长度是可变的;数组只能存放基本数据类型且只能存储一种类型,集合用来存放类对象的引用并且可以存储同一种类型。该框架必须是高性能的。的实现也必须是高效的。该框架允许不同类型的集合,以类似的方式工作,具有高度的互操作性。对一个集合的扩展和适应必须是简单的。1、List列表:有序的,可重复的;2、Queue队列:有序,可重复的;

2302_79993788的博客 1605

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

list、set和map集合的区别

集合List Set以及Map的区别 要想了解三者的区别,我们想来看看java的集合框架图 接着就需要从它们各自的特点来说 一、List的主要特点及用法 可以允许存储重复的对象 可以插入多个null元素 是一个有序容器,保持了每一个元素的插入顺序,插入的顺序即输出的顺序 常用的实现类有 ArrayList、LinkedList 和 Vector。ArrayList 最为流行,它提供了使用索引的...

xiao_xiao_b的博客 869

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

C# list删除 另外list里面的元素_Java集合大全Map,Set,List

Set,List,Map的区别java集合的主要分为三种类型:Set(集)List(列表)Map(映射)要深入理解集合首先要了解下我们熟悉的数组:数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放对象类型的数据,不能存放基本数据类型。集合和数组的区...

weixin_39876514的博客 242

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

MAP,SET,LIST,等JAVA中集合解析

1、Collection 和 Map 的区别 容器内每个为之所存储的元素个数不同。Collection类型者,每个位置只有一个元素。Map类型者,持有 key-value pair,像个小型数据库。 2、Java2容器类类库的用途是“保存对象”,它分为两类,各自旗下的子类关系 Collection       --List:将以特定次序存储元素。所以取出来的顺序可能和放入顺序不同。   ...

在路上 146

Java之数组array和集合list、set、map

之前一直分不清楚java中的array,list。同时对set,map,list的用法彻底迷糊,直到看到了这篇文章,讲解的很清楚。 世间上本来没有集合,(只有数组参考C语言)但有人想要,所以有了集合 有人想有可以自动扩展的数组,所以有了List 有的人想有没有重复的数组,所以有了set 有人想有自动排序的组数,所以有了TreeSet,TreeList,Tree**...

diaolapei9880的博客 410

浅谈Java中的Set、List、Map的区别

就学习经验,浅谈Java中的Set,List,Map的区别,对JAVA的集合的理解是想对于数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),JAVA集合可以存储和操作数目不固定的一组数据。所有的JAVA集合都位于 java.util包中!JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。 JAVA集合主要分为三种类型: Se

qq1353424111的博客 3万+

Java中Set,List,Map的区别

Set,List,Map的区别 java集合的主要分为三种类型:Set(集) List(列表) Map(映射) 要深入理解集合首先要了解下我们熟悉的数组: 数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存放引用类型的的数据,不能存放基本数据类型。

liuguangfudan的博客 1377

Java中的Set,List,Map的区别 (转)

对JAVA的集合的理解是相对于数组   相对于数组的是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型)   JAVA集合可以存储和操作数目不固定的一组数据。   所有的JAVA集合都位于 java.util包中!   JAVA集合只能存放引用类型的的数据,不能存放基本数据类型.   JAVA集合主要分为三种类型:   Set(集)   List(列表)   M

ebonyzhang 784

Java集合框架 Collection系集合 List Collection接口方法 List接口方法 什么是集合?怎么遍历Map? 怎么遍历集合?

Collection集合系列 Collection接口下还有List接口和Set接口,经过下面的思维导图,可以更为清晰的体现

Ryan 的博客 270

Java中的Set,List,Map的区别

为什么80%的码农都做不了架构师?>>> ...

weixin_34272308的博客 85

List,Map,Set三个接口,存取元素时,各有什么特点

List 介绍 List特点:元素bai有放入顺序,元素du可重复 List接口有三个实现类:LinkedList,ArrayList,Vector LinkedList:底层基于链表实现,链表内存是散乱的,每一个元素存储本身内存地址的同时还存储下一个元素的地址。链表增删快,查找慢 ArrayList和Vector的区别:ArrayList是非线程安全的,效率高;Vector是基于线程安全的,效率低 Query接口有一个实现类:LinkList Set 介绍 Set特点:元素无放入顺zhi序,元素不可

adsdaas的博客 1620

3.java中Map,List与Set的区别

Set,List,Map的区别java集合的主要分为三种类型:·        Set(集)·        List(列表)·        Map(映射)要深入理解集合首先要了解下我们熟悉的数组:数组是大小固定的,并且同一个数组只能存放类型一样的数据(基本类型/引用类型),而JAVA集合可以存储和操作数目不固定的一组数据。 所有的JAVA集合都位于 java.util包中! JAVA集合只能存...

郑学炜的技术博客 442

list ,set,map 三中类型的集合那些能存放null类型的值

public List selectSideNews(Map param){ if(null!=param.get("content")){ 看这句 总是能进入if的方法里面 String location = (String) param.get("location"); if(StringUtil.isNotNull(location) ){//获取输入的地址

lsd8906的博客 1万+
上一篇: Java多线程编程
下一篇: Java数组遍历、求最大值、选择排序、冒泡排序、二分查找
梦中的梦
博客等级 码龄18年 16粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值