11.Java集合框架概述---Collection(Map)总结

Java数组优缺点和集合概述,Collection、Map接口中常见方法的使用 一、集合框架的概述 1.集合、数组都是对多个数据进行存储操作的结构,简称Java容器。 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库…)。 2.1数组存储多个数据方面的特点: ①一旦初始化以后,其长度就确定了; ②数组一旦定义好,其元素的类型就确定了,也就只能操作指定类型的数据了;比如:String[[],int[],object[]… 2.2.数组在存储多个数据方面的缺点: ①一旦初始化以后,其长度就不可以修改; ②数组中提供的方法非常有限,对于增 阅读详情

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
map中常用的方法“:
在这里插入图片描述
****describe:
一:
|—Map:双列数据:存储key-value对的数据:—类似于高中的函数:y = f(x);
|—HashMap:作为Map的主要实现类,线程不安全,效率高;存储null的key和value
|—LinkedHashMap:保证在遍历map元素时,可以按照添加的顺序实现遍历
原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素
对于频繁的遍历操作,此类方法执行效率高
|—TreeMap:保证按照添加的key-value进行排序,实现排序遍历,考虑自然排序和定制排序(按照key排序)
底层使用红黑树
|—HashTable:作为古老的实现类,线程安全,效率低;不能存储value的key和value
|—Properties:常用来处理配置文件,key和value都是String类型
HashMap底层:JDK7之前:数组加链表
JDK8:数组+链表+红黑树—>提升效率
1.HashMap底层实现
2.HashMap和HashTable一同?
3.currentHahMap与HashTable区别
二.Map底层结构的理解
key不可以重复使用set存储所有的key,—>key所在的类重写equals与HashCode方法(HashMap)—>因为时Set
value可以重复,有序的,使用Collection存储所有的value—>value所在的类要重写equals()–因为是Collection
一个键值对:key-value构成了一个Entry对象;
Map中的Entry无序的,不可重复的,使用Set存储所有的Entry

三.HashMap底层实现原理:
JDK7为例:
HashMap hash = new HashMap();
在实例化后,底层创建长度是16的一维数组Entry[] table;
…已经执行过多次赋值
hash.put(key1,value1)
首先调用KEY所在的类的HashCode()计算key1的Hash值,此时哈希值经过某种计算以后,得到在entry中的存放位置
如果此位置上数据为空,此时key1添加成功 ,—情况一
如果此位置上的数据不为空,意味着此位置存在一个或多个数据(以链表形式存在),比较当前类key1与已经存在的一次或多个位置的哈希值;如果都不相同,则key1添加成功—情况二
如果key1与已经存在的一个数据的哈希值相同,调用key1所在类的equals进行比较;如果equals返回false添加成功;—情况三如果返回true,则使用value1替换相同key的value值;
关于情况二和情况三:此时key1-value1和原来的数据以链表的方式存储;
再添加过程中,会涉及到扩容问题,当超出临界值时,且该位置上有数据时(非空),;默认方式扩容为原来的二倍,并将原数据复制过去;
JDK8相较于JDK7比较
1.new HashMap()没有创建一个长度为16的数组
2.JDK8底层为Node[] 不是Entry[]
3.首次调用put方法时,底层创建长度为16的数组
4.JDK7底层结构只有:数组加链表,JDK8底层结构:数组加链表加红黑树当数组的某一个索引位置上的元素以链表形式存在的数据个数 > 8;且当前数组超过64,此时此索引位置上的数据改为使用红黑树存储**

      @Test
public void test1(){
    Map map = new HashMap();
    map.put(null,456);
    map.put(null,null);
    Map map1 = new Hashtable();
    //map1.put(null,123);//java.lang.NullPointerException

    }
/*
        *  添加 、 删除、修改操作 :
          Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中
          void putAll(Map m):将m中的所有key-value对存放到当前map中
          Object remove(Object key):移除指定key的key-value对,并返回value
          void clear():清空当前map中的所有数据
         添加:put,putall
         删除:remove
         修改:put,putall
         查询:get,containskey
         长度:size
         遍历:keyset();values();
         */
        Map map = new HashMap();
        map.put(123,123);
        map.put("AA",123);
        map.put("DD",4123);
        map.put(12345,123);
        map.put(true,123);
        System.out.println(map);
        Map map1 = new HashMap();
        map1.putAll(map);
        System.out.println(map1);
        Object aa = map1.remove("AA");//aa时移除的键值对
        System.out.println(map1);
        map.clear();//与map等于null不同
        System.out.println(map.size());//0
    }
@Test
    public void test2(){
        /*
          元素 查询的操作:
          Object get(Object key):获取指定key对应的value
          boolean containsKey(Object key):是否包含指定的key
          boolean containsValue(Object value):是否包含指定的value
          int size():返回map中key-value对的个数
          boolean isEmpty():判断当前map是否为空
          boolean equals(Object obj):判断当前map和参数对象obj是否相等
         */
        Map map = new HashMap();
        map.put(123,123);
        map.put("AA",123);
        map.put("DD",4123);
        map.put(12345,123);
        map.put(true,123);
        System.out.println(map.get(true));//123
        System.out.println(map.containsKey("AA"));//true
        System.out.println(map.containsValue(123));//true
        map.clear();
        System.out.println(map.isEmpty());//true
    }
@Test
    public void test3(){
            //  元视图操作的方法:
            //  Set keySet():返回所有key构成的Set集合
            //  Collection values():返回所有value构成的Collection集合
            //  Set entrySet():返回所有key-value对构成的Set集合
        Map map = new HashMap();
        map.put(123,123);
        map.put("AA",123);
        map.put("DD",4123);
        map.put(12345,123);
        map.put(true,123);
        //遍历所有的key
        System.out.println(map.keySet());
        Set set = map.keySet();
        Iterator iterator = set.iterator();
        while (iterator.hasNext()){
            System.out.println(iterator.next());
        }
        //遍历所有的value
        Collection values = map.values();
        Iterator iterator1 = values.iterator();
        while (iterator1.hasNext()){
            System.out.println(iterator1.next());
        }
        //遍历所有的key-value
        //方式一:entrySet()
        Set set1 = map.entrySet();
        Iterator iterator2 = set1.iterator();
        while (iterator2.hasNext()){
            Object next = iterator2.next();
            //集合中的元素都是entry
            Map.Entry next1 = (Map.Entry) next;
            System.out.println(next1.getKey());
            System.out.println(next1.getValue());
        }
        //方式二:先找到key,再通过key找value
        Set set2 = map.keySet();
        Iterator iterator3 = set2.iterator();
        while (iterator3.hasNext()){
            Object next = iterator3.next();
            System.out.println(next + "--->" + map.get(next));
        }
    }

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
7 Collections工具类
在这里插入图片描述
在这里插入图片描述

DELL SC存储扩容避坑指南:6Gb vs 12Gb扩展柜混插的真相 本文深入解析DELL SC存储扩容中6Gb与12Gb扩展柜混插的核心规则与性能影响。文章指出,从SCOS 7.3版本起允许混插,但整个SAS环路速率将降至最低设备水平,尤其在12Gb控制器上接入6Gb扩展柜会严重拖累性能。指南提供了清晰的兼容性矩阵、实战操作流程及关键避坑清单,帮助管理员安全、高效地完成存储扩容。 阅读详情

相关推荐

ABAP HANA BP主数据批导

SAPhana官方推荐的创建bp主数据的类是CL_MD_BP_MAINTAIN 客户的创建具体示例代码如下: DATA: LT_RETURN_MAP TYPE MDG_BS_BP_MSGMAP_T. DATA: LS_RETURN_MAP TYPE MDG_BS_BP_MSGMAP. DATA: LS_MESSAGE_MAP TYPE MDG_BS_BP_MSGMAP_KEY. DATA: LT_DATA TYPE CVIS_EI_EXTERN_.

IamRunjiang的博客 4143

Java学习 知识点总结 集合Collection 和Map。尚硅谷P511——P562

Java学习 知识点总结 集合Collection 和Map。尚硅谷P511——P562

weixin_43367551的博客 205

如何更好的理解PFC(功率因数校正)

此电路虽然简单,可以在前期设计的无PFC功能的设备上,简单的增加一个合适的电感(适当的选取L和C的值),从而达到具有PFC的作用,但是这种简单的、低成本的无源PFC输出纹波较大,滤波电容两端的直流电压也较低,电流畸变的校正及功率因数补偿的能力都很差,而且L的绕制及铁芯的质量控制不好,会对图像及伴音产生严重的干扰,只能是对于前期无PFC设备使之能进入市场的临时措施。)在t4~t5期间尽管二极管左边电压在逐步上升,但是由于二极管右边的Uc放电缓慢右边的电压Uc仍旧大于左边,二极管仍旧反偏截止。

U_YAO的博客 949

Java集合(Collection,Map等)的个人总结[有原理]

集合概述 集合部分关系图解 图解部分说明: 1.Collection Collection是一个接口,是高度抽象出来的集合,它包含了集合的基本操作和属性。 2.Collection包含了List和Set两大分支。 List List是一个有序的集合,可重复,每一个元素都有它的索引,...

qq_34257088的博客 388

DIY电子管耳放实战:12AU7+6V6GT组合的电路设计与调试心得

本文详细分享了DIY电子管耳放的实战经验,重点解析了12AU7与6V6GT经典组合的电路设计、元件选型与调试过程。内容涵盖从核心架构设计、关键元件(如输出变压器、耦合电容)的科学选型,到静态工作点设置、负反馈引入及常见噪声问题的排查,旨在帮助音响DIY爱好者和电子管放大器初学者成功打造一台低失真、高信噪比且富有“胆味”的耳机放大器,享受动手制作的乐趣与温暖音质。

weixin_29230805的博客 552

对LSTM中每个batch都初始化隐含层的理解

不知道有没有人和我有一样疑惑 在LSTM相关的代码中,为什么每个batch都会将隐藏层重新初始化, 这样不会把以前训练出来的参数丢掉吗?? 比如 代码来自GitHub 看了一些解释是h与c是状态,不是参数,每个batch中都需要初始化为0,LSTM 中的参数是W,b。 网络中训练的是参数,不是状态。 说真的。。。当时我没怎么看懂。。。 咨询了实验室的师兄后,我有了自己的理解 产生误解的主要原因是我对RNN和LSTM的结构理解不深入,我们通常看到RNN结构图基本都是这样的 ...

Chauncey_Wang的博客 5910

Map接口

一、Map接口继承树 二、Map接口概述 Map与Collection并列存在,用于保存具有映射关系的数据key-value。 Map 中的 key 和 value 都可以是任何引用类型的数据。 Map 中的 key 用Set来存放,不允许重复,即同一个 Map 对象所对应的类,须重写hashCode()和equals()方法。 常用String类作为Map的“键”。 key 和 value 之间存在单向一对一关系,即通过指定的 key 总能找到唯一的、确定的 value。 Map接口的常用实现类:Ha

qq_39794062的博客 326

【OD统一考试(C卷)考生抽中题】符号运算(200 分),用 C++ 编码,速通

3. 结果为整数或分数, 分数必须化为最简格式(比如 6, 3/4, 7/8, 90/7)参加华为 od 机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。字符串格式的表达式,仅支持±*/,数字可能超过两位,可能带有空格,没有负数。4. 除数可能为 0,如果遇到这种情况,直接输出"ERROR"1. 所有的输入数字皆为正整数(包括 0)用例的输入一定合法, 不会出现括号不匹配的情况。结果可能是负数, 负号放在最前面。表达式结果,以最简格式表达。长度小于 200 个字符。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 1764

Java学习----Collection\Map总结

集合(用于存放引用类型的数据,可变长的数组) 由图可见集合分为2大类型,单列集合(collection)与双列集合(Map) 其中单列集合又可分为2大类,既list和Set 其中list属于可重复集合,而且有索引,可以根据集合的下标去获取当前位置的元素 (使用时需要保证该下标的存在否则会报错) java.lang.IndexOutOfBoundsException 下标越...

zixing08的博客 247

【AHE数据集】历史/未来全球网格热排放数据 PF-AHF

AHE数据集

WW、forever的博客 127

学Simulink——基于AI融合与智能调度的场实例:联邦学习支持的多卫星协同通信建模

本文介绍了一种基于联邦学习的多卫星协同通信Simulink建模方法。系统采用"星-星协同+星-地协调"架构,每颗卫星本地训练LSTM链路预测模型,地面中心通过FedAvg算法聚合模型参数。建模过程包括卫星通信模型构建、联邦学习机制设计、协同决策系统开发等步骤,支持隐私保护、高效协同和智能决策。仿真结果表明,该方法在预测准确率(89%)、吞吐量(56.7Mbps)等方面优于独立训练模式,接近集中式训练性能。该方案为大规模卫星星座的智能协同提供了仿真验证平台,未来可拓展去中心化联邦学习、异构

xiaoheshang_123的博客 209

Java-Collection集合和Map集合总结

本文欢迎转载,转载前请联系作者,经允许后方可转载。转载后请注明出处,谢谢! http://blog.csdn.net/colton_null 作者:喝酒不骑马 Colton_Null from 优快云 如果一个程序只有包含固定数量的且其生命周期都是已知的对象,那么这是一个非常简单的程序。 一、引言 我们在编程的时候,有时候在程序运行中需要根据当时的情况去创建对象,在此之前可能不...

因特马 3245

YOLOv11改进 | 注意力篇 | YOLOv11引入24年最新的ELA注意力机制,并构建C2PSA_ELA

为了解决这些限制,本文介绍了一种高效的本地注意力(ELA)方法,实现了一个简单的结构,大幅度的性能改善。我们精心设计了ELA中的三个超参数,产生了四个不同的版本:ELA-T,ELAB,ELA-S和ELA-L,以满足不同视觉任务的具体要求,如图像分类,目标检测和语义分割。到此本文的正式分享内容就结束了,在这里给大家推荐我的YOLOv11改进有效涨点专栏,本专栏目前为新开的,后期我会根据各种前沿顶会进行论文复现,也会对一些老的改进机制进行补充,如果大家觉得本文帮助到你了,订阅本专栏,关注后续更多的更新~

tsg6698的博客 1285

Java集合框架的Collection和Map接口概述

Java集合框架的Collection和Map接口概述 Java集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象的操作,就要对对象进行存储。 另一方面,使用Array存储对象方面具有一些弊端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。 数组在内存存储方面的特点: 数组初始化以后,长度就确定了。 数组声明的类型,就决定了进行元素初始化时的类型 数组在存储数据方面的弊端: 数组初始化以后,长度就不可变了,不便于扩展 数组中提供

程序员小章的博客 881

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java集合之——Collection接口

前言 老师在教我们学习集合的时候,大多都是以数组为砖,列举了对象数组有那些问题?比如普通的对象数组的最大问题在于数组中的元素个数是固定的,不能动态的扩充大小,所以最早的时候可以通过链表实现一个动态对象数组。但是这样做毕竟太复杂了,所以在 Java 中为了方便用户操作各个数据结构,所以引入了类集的概念,有时候就可以把类集称为 java 对数据结构的实现。 在整个类集中的,这个概念是从 JDK 1.2(Java 2)之后才正式引入的,最早也提供了很多的操作类,但是并没有完整的提出类集的完整概念。 类集中最大的几

you do ,you win 4310

蓝牙模块HM-10手册

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

集合框架之Collection接口和Map接口

简介 集合框架:用于存储数据的容器。 集合框架是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。 特点 对象封装数据,对象多了也需要存储。集合用于存储对象。 对象的个数确定可以使用数组,对象的个数不确定的可以用集合。因为集合是可变长度的。 集合和数组的区别 数组是固定长度的;集合可变长度的。 数组可以存储基本数据类型,也可以存储引用数据类型;集合只能存储引用数据类型。 数组存储的元素必须是同一个数据类型;集合存储的对象

CLa11111111的博客 1338

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

6000字粗讲让你彻底明白Java集合框架的使用逻辑(Collection、List、Set、Map)

Map集合也被叫做“键值对”集合,格式:{key1=value1,key2=value2,key3=value3...}Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值。Map集合在什么业务场景下使用?比如说购物车场景{商品1=2,商品2=3,商品3=2,商品4=3}需要存储一一对应的数据时,就可以考虑使用Map集合来做。Map集合的体系MapTreeMapMap集合体系的特点。

Bew1tch的博客 1073

第 12 天 Java 集合(collection,set,map)

集合[collection,set,map]一、集合框架概述1. 概述2. 集合使用场景3. 集合的分类二、collection1. 概述2. api 方法3. Iterator迭代器接口1) 迭代器概述2)迭代器方法三、List接口1. 概述2. API 方法3. List实现类3.1 ArrayList3.2 LinkedList3.3 Vector3.4 ArrayList/LinkedList/Vector的异同?ArrayList底层是什么?扩容机制?Vector和ArrayList的最大区别?四

我还是个菜鸟 1163

Java集合框架概述及Collection接口方法讲解

Java集合框架概述 一方面, 面向对象语言对事物的体现都是以对象的形式,为了方便对多个对象 的操作,就要对对象进行存储。另一方面,使用Array存储对象方面具有一些弊 端,而Java 集合就像一种容器,可以动态地把多个对象的引用放入容器中。 1 数组在内存存储方面的特点: 2 数组初始化以后,长度就确定了。 3 数组声明的类型,就决定了进行元素初始化时的类型 4 数组在存储数据方面的弊端: 5 ...

gldbys的博客 319

Java集合Collection、List、Set、Map使用详解

Java集合排序及java集合类详解 (Collection, List, Set, Map)   摘要内容 集合是Java里面最常用的,也是最重要的一部分。能够用好集合和理解好集合对于做Java程序的开发拥有无比的好处。本文详细解释了关于Java中的集合是如何实现的,以及他们的实现原理。   目 录 1        集合框架............................

gaoxiangnumber1——Gao Xiang's Blog 2961

Map是不是集合?

Map是不是集合? 一、起因 今天在一个群里跟几位朋友就“map是不是集合“”争执了起来;几位朋友一致认为map不是集合,他们说只有Collection接口下的才是集合,而我认为Collection和Map下的实现类都是集合类。 二、发展 于是我开始在网上搜索一下,发现然并卵,没有找到我想要的结果。于是乎,我翻开了书。在《java核心技术 卷一 第九版》一书中的569页,13.3节 集

紫眸的博客 1万+

【JAVA进阶之集合】史上最完整的Collection以及Map集合底层原理分析、各种情况的选型

Collection集合概述:是单例集合的顶层接口,它表示一组对象,这些对象也称为Collection的元素JDK 不提供此接口的任何直接实现.它提供更具体的子接口(如Set和List)实现创建Collection集合的对象:多态的方式具体的实现类ArrayListList集合的概述:有序集合,这里的有序指的是存取顺序用户可以精确控制列表中每个元素的插入位置,用户可以通过整数索引访问元素,并搜索列表中的元素与Set集合不同,列表通常允许重复的元素List集合的特点:存取有序可以重复。

2301_77358195的博客 1407

Java集合框架

Collection 接口是 List、Set 和 Queue 接口的父接口,该接口里定义的方法既可用于操作 Set 集合,也可用于操作 List 和 Queue 集合。JDK不提供此接口的任何直接实现,而是提供更具体的子接口(如:Set和List)实现。在 Java5 之前,Java 集合会丢失容器中所有对象的数据类型,把所有对象都当成 Object 类型处理;从 JDK 5.0 增加了泛型以后,Java 集合可以记住容器中对象的数据类型。/*​。

sheep55的博客 1125

Java集合概述集Collection 和 Iterator 接口用法详解

以下内容部分来自 疯狂Java讲义/李刚 ,博客仅用于个人笔记及帮助他人用途,无任何商业目的,如有侵权,请联系作者删除。 Java集合概述为了保存数量不确定的数据,以及保存具有映射关系的数据(也被称为关联数组),Java 提供了集合类,集合类主要负责保存、盛装其他数据,因此集合类也被称为容器类。所有的集合类都位于 java.util 包下,后来为了处理多线程环境下的并发安全问题,Java5 还在 j

张可的博客 905

Java 集合框架概述及Collection接口中常用的方法总结

一、集合框架概述: 集合,数组都是对多个数据进行存储操作的结构,简称Java容器 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中的数据) 数组在存储多个数据的特点: 2.1.一旦初始化以后,长度就确定了。 2.2.数组一旦定义好,其元素的类型也就确定了。我们也就只能操作指定类型的数据了 比如:String[] arr,int[] arr1,Object[] arr2 数组在存储多个数据的缺点: 3.1.一旦初始化以后,其长度就不可修改 3

路宇的博客 398

Java集合--Collection、Map、List、Set、Iterator、Collections工具类

集合、数组都是对多个数据进行存储从左的结构,简称Java容器说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt, .jpg, .avi,数据库中)2.1数组在存储多个数据方面的特点一旦初始化以后,其长度就确定了。数组一旦定义好,其元素的类型就确定了。我们也就只能操作指定类型的数据了。比如:String[] arr;int[] arr1;2.2数组在存储多个数据方面的缺点一旦初始化以后,其长度就不可修改。

Arbicoral的博客 1220
上一篇: 11.Java集合框架概述---Collection(List和Set)总结
下一篇: 11.集合练习
漂酿男骸
博客等级 码龄7年 31粉丝 71原创
评论 3
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值