【JavaSE_学习笔记】Map接口及其子实现类

JavaSE 学习日志5(接口、注解、List、Map、异常) Application:入口类(启动程序,会去查找@service,@controller,必须在同包内查找,所以要与他们平级存放)为了快速方便添加元素,可以用List.of(元素1,元素2....),但是不可修改,如果继续添加list.add(元素),则会报错。1.没写try-catch,当抛出异常时,没有捕获,交由main方法,main方法交由上层虚拟机,虚拟机直接停止程序运行。2.catch定义的异常与捕捉到的异常不匹配,导致无法捕获异常,交由main,再交由虚拟机停止程序运行。 阅读详情

【JavaSE_学习笔记】Map接口及其子实现类

Map接口

如果需要存储成对存在的数据,就要使用双列集合
实现了Map接口的集合类具备的特点:存储的数据以键值对的形式存在,键(key)不能重复,值(value)可以重复
Map接口中的方法:
增:
  V put(K key,V value):添加元素到map集合,返回以前与key关联的值,如果没有则返回null
  若两元素键相同,值不同,则后一元素视为重复元素,不能添加,但是值覆盖,即键相同,值覆盖
  void putAll(Map

import java.util.HashMap;

public class Demo1 {
    public static void main(String[] args) {
        HashMap <String,String>hm=new HashMap<String,String>();
        hm.put("文章", "马伊琍");
        hm.put("邓超", "孙俪");
        hm.put("文章", "姚笛");
        System.out.println(hm);
        HashMap <String,String>hm2=new HashMap<String,String>();
        hm2.put("李晨","范冰冰");
        hm2.put("黄晓明", "杨颖");
        hm.putAll(hm2);
        System.out.println(hm);
    }
}

结果:

{文章=姚笛, 邓超=孙俪}
{李晨=范冰冰, 文章=姚笛, 邓超=孙俪, 黄晓明=杨颖}

删:
  void clear():清除map集合中的所有元素
  V remove(Object key):根据键删除一条数据,返回该键对应的值
举例:

import java.util.HashMap;

public class Demo2 {
    public static void main(String[] args) {
        HashMap <String,String>hm=new HashMap<String,String>();
        hm.put("文章", "马伊琍");
        hm.put("邓超", "孙俪");
        hm.put("李晨","范冰冰");
        hm.put("黄晓明", "杨颖");
        hm.remove("李晨");
        System.out.println(hm);
        hm.clear();
        System.out.println(hm);
    }
}

结果:

{文章=马伊琍, 邓超=孙俪, 黄晓明=杨颖}
{}

判断:
  boolean containsKey(Object key):判断是否存在指定的键
  boolean containsValue(Object value):判断是否存在指定的值
  boolean isEmpty():判断集合是否为空
  空返回true,不空返回false,null报错(空指针异常)
举例:

import java.util.HashMap;

public class Demo2 {
    public static void main(String[] args) {
        HashMap <String,String>hm=new HashMap<String,String>();
        hm.put("文章", "马伊琍");
        hm.put("邓超", "孙俪");
        hm.put("李晨","范冰冰");
        hm.put("黄晓明", "杨颖");

        System.out.println("存在邓超么?:"+hm.containsKey("邓超"));
        System.out.println("存在杨颖么?:"+hm.containsValue("杨颖"));
        System.out.println("集合为空么?:"+hm.isEmpty());
    }
}

结果:

存在邓超么?:true
存在杨颖么?:true
集合为空么?:false

获取:
  V get(Object key):根据键获取对应的值
  int size():查看map集合的元素个数
举例:

import java.util.HashMap;

public class Demo2 {
    public static void main(String[] args) {
        HashMap <String,String>hm=new HashMap<String,String>();
        hm.put("文章", "马伊琍");
        hm.put("邓超", "孙俪");
        hm.put("李晨","范冰冰");
        hm.put("黄晓明", "杨颖");

        System.out.println(hm.get("李晨"));//范冰冰
        System.out.println(hm.size());//4
    }
}

迭代:
  Set< K> keySet():把map集合中所有的key的数据存储到Set集合中返回
  Collection< V> values():把map集合中的所有值存储在Collection返回
  Set< Map.Entry< K,V>> entrySet():返回Entry(键值对对象)对象存在Set返回
  一个Entry对象就是一条map数据
Map.Entry< K,V>接口中的方法:
  K getKey():返回键
  V getValue():返回值
  V setValue(V Value):用指定的值替换于此对应的值

两种遍历方式:
方式一: keySet方法遍历,keySet方法返回的集合只包含键,值需要用Map接口的get()方法获取

import java.util.HashMap;
import java.util.Set;

public class Demo2 {
    public static void main(String[] args) {
        HashMap <String,String>hm=new HashMap<String,String>();
        hm.put("文章", "马伊琍");
        hm.put("邓超", "孙俪");
        hm.put("李晨","范冰冰");
        hm.put("黄晓明", "杨颖");

        Set<String> set = hm.keySet();
        for(String s:set){
            System.out.println("键:"+s+"\t值:"+hm.get(s));
        }
    }
}

结果:

键:李晨    值:范冰冰
键:文章    值:马伊琍
键:邓超    值:孙俪
键:黄晓明   值:杨颖

方式二: entrySet方法遍历,推荐使用

import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Set;

public class Demo3 {
    public static void main(String[] args) {
        HashMap <String,String>hm=new HashMap<String,String>();
        hm.put("文章", "马伊琍");
        hm.put("邓超", "孙俪");
        hm.put("李晨","范冰冰");
        hm.put("黄晓明", "杨颖");

        Set<Entry<String, String>> set = hm.entrySet();
        for(Entry e:set){
            System.out.println("键:"+e.getKey()+"\t值:"+e.getValue());
        }
    }
}

结果:

键:李晨    值:范冰冰
键:文章    值:马伊琍
键:邓超    值:孙俪
键:黄晓明   值:杨颖

HashMap

底层依赖哈希码实现,存储的位置根据键的哈希码算出HashMap的存储原理:
  往HashMap存储元素时,首先HashMap会调用键的hashCode()方法得到一个哈希码值,再通过哈希码值可以看出该元素在哈希表中的存储位置
  情况一:若根据键的哈希码值算出的位置目前没有元素存储,则该元素可以直接添加到哈希表中;
  情况二:若根据键的哈希码值算出的位置已经有其他元素存储了,还会调用键的euqals()方法与这个位置的元素再比较一次,若返回true,则该元素被视为重复元素,不允许添加;若返回false,则该元素可以被添加
  这里写图片描述
  
LinkedHashMap:底层使用了链表和哈希表实现,元素有序且唯一

TreeSet

底层是使用了红黑树数据结构实现
特点:根据键的数据进行排序存储
注意: 1.往TreeMap添加元素时,若键不具备自然顺序特性,则键所属的类就必须实现ComParable接口;
    2.若键不具备自然顺序特性,且没有实现Comparable接口,则必须要在创建treeMap对象时传入一个比较器对象
比较器:class 类名 implementsComparator{}

HashTable

底层也使用哈希表来实现的,实现原理和HashMap一致,但是线程安全的,操作效率低
面试题:HashMap与HashTable的区别:
  共同点:底层都是哈希算法,都是双列电话
  不同点:1.HashMap是线程不安全的,效率高。jdk1.2
       HashTable是线程安全的,效率低,jdk1.0
      2.HashMap可以存储null键,null值
       HashTable不可以存储null键,null值

Gemini国内合规接入指南:API身份链构建与镜像站选型 生成式AI服务接入本质是服务可用性工程,而非单纯网络连通问题。理解大模型API调用原理,关键在于掌握身份认证、权限控制与数据流向三大技术要素。Gemini作为主流多模态模型,其国内可用路径已从‘模拟访问’转向‘能力映射’——聚焦文本生成等核心能力的稳定调用。通过构建七步Google Cloud身份链(含+86实名、国际信用卡核验、Service Account最小权限配置),可实现99.2%高成功率的合规API接入;而教育型、企业型、开发者型三类镜像站则提供差异化过渡方案,均需满足端到端加密、境内CDN托管 阅读详情

相关推荐

SAP ABAP ALV表格实战:5分钟搞定单元格下拉框配置(附完整代码)

本文详细介绍了在SAP ABAP开发中如何快速配置ALV表格的单元格下拉框功能,通过5分钟实战教程帮助开发者掌握关键步骤。文章包含完整的ABAP代码示例,涵盖下拉值定义、字段目录配置及ALV控件绑定等核心操作,特别适合需要实现财务系统费用类型选择或采购系统物料分类等场景的开发者参考。

weixin_28331555的博客 111

Map接口的实现类们

一、Map接口的实现类们: 1、HashMap 2、Hashtable 3、TreeMap 4、LinkedHashMap 5、Properties 二、HashMap和Hashtable 哈希表 Hashtable:旧版。线程安全的。它的key和value不能为null。 HashMap:相对Hashtable它来说新一点。线程不安全。它允许key和value为null值。 具有线程安全对比的: StringBuffer和StringBuilder Vector和ArrayList Hashtab

Marblue_的博客 1032

超聚变安装银河麒麟服务器系统ky10-server-x86

超聚变-通过BMC口进服务器管理界面如下图为BMC管理口:默认BMC口IP:https://192.168.2.100l浏览器打开网页,输入用户名和密码登陆后,如下图红框处,选择“启动虚拟控制台”——选择“HTML集成远程控制台”系统银河麒麟服务器系统ky10 server x86选择镜像文件X86架构我们一般选择下图2212版本选择启动方式:光驱重启出现安装图形化界面选装安装系统的磁盘系统安装盘选完后如下图,会置灰创建root密码开始安装系统首次进入,有协议界面。

zengliguang的专栏 5965

Map接口有哪些实现类

HashMap:作为Map的主要实现类:线程不安全的,效率高,可以存储null的key和value 子类:LinkedHashMap:保证在遍历Map元素时,可以按照添加的顺序实现遍历。原因:在原有的HashMap底层结构基础上,添加了一对指针,指向前一个和后一个元素。 对于频繁的遍历操作,此类的执行效率高于HashMap TreeMap:保证按照添加的key-value进行排序,实现排序遍历。(按照key排序,key的自然排序和定制排序)底层使用红黑树。 Hashtable:作为Map的古老实现类:

m0_73878473的博客 1011

高性能网站设计之缓存更新的套路

看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。 我不知道为什么这么多人用的都是这

代码技巧 1万+

【个人记录】CentOS7升级glibc至2.28

由于CentOS7系统已经停止支持, 虽然大部分业务已经迁移至OpenEuler,但仍然有部分业务系统跑在CentOS7上。在尝试部署新业务环境时经常会提示如下错误(以code-server运行需要的node 20为例)node -v为了保障业务可正常运行,通常采用Docker继承好的node环境进行部署,但部分场景还是需要宿主机使用新版glibc版本。本文记录本人一次成功升级glibc(2.17=>2.28)的步骤。

喵呜 3883

Map接口及其实现类

Map接口及其实现类

weixin_46286023的博客 3184

ITIL-IT运维管理-概述

ITIL-IT运维管理-概述 概述 IT服务管理(ITSM)是一套帮助企业对IT系统的规划、研发、实施和运营进行有效管理的方法,是一套方法论。ITSM起源于ITIL(IT Infrastructure Library,IT基础架构标准库),ITIL是CCTA(英国国家电脑局)于1980年开发的一套IT服务管理标准库。它把英国在IT管理方面的方法归纳起来,变成规范,为企业的IT部门提供一套从计划、研发、实施到运维的标准方法。 中文名 IT服务管理 外文名 ITService Management 专家

syjhct的博客 4万+

Map接口的实现类

Map接口常用的实现类有HashMap和TreeMap。 通常建议使用HashMap实现类Map集合,因为有HashMap类实现的Map集合对于添加和删除映射关系效率更高。HashMap是基于哈希表的Map接口的实现,HashMap通过哈希码对其内部的映射关系进行快速查找:有HashMap类实现的Map集合对于添加或删除映射关系效率较高;而TreeMap中的映射关系存在一定的顺序,如果希望Map集合中的对象存在一定得顺序,应该使用TreeMap类实现Map集合。 1、HashMap类 该类基于哈希表的

qq1922631820的博客 1476

LangChain从入门到精通最全教程

LangChain是一个用于构建基于大语言模型(LLM数据感知:连接外部数据源(文档、API等)智能代理:通过工具调用实现自主决策模块化设计:支持链式调用、记忆管理、提示词工程等from langchain . llms import BaseLLM class CustomLLM(BaseLLM) : def _call(self , prompt : str , ** kwargs) - > str : return f"自定义响应: {

Cachel Wood的博客 1410

出现 Connection Failed [MySQL][ODBC Driver]Access denied for user ‘root‘@x(using password:YES)解决方法

Connection Failed [MySQL][ODBC 8.0(w) Driver]Access denied for user 'root'@xxxx (using password:YES)

码农研究僧的博客 1060

Java Map接口及其常用实现类详解

在Java编程语言中,Map是一个非常重要的接口,它代表了一个对象映射到另一个对象的映射关系。Map中的每一个元素都包含一个键和一个值,键在Map中是唯一的,但值可以重复。:ConcurrentHashMap是Java 5引入的一个线程安全的Map实现类,它提供了比Hashtable更高的并发性能。Map接口是Java集合框架的重要组成部分,提供了键值对的映射功能。:LinkedHashMap是HashMap的一个子类,它维护了一个双向链表来记录插入的顺序,因此它提供了按照插入顺序遍历元素的功能。

yokeyhui的博客 963

【深度学习新浪潮】ISP芯片算法技术简介及关键技术分析

ISP(Image Signal Processor)芯片作为现代影像系统的核心组件,负责对图像传感器输出的原始信号进行后期处理。ISP的主要功能包括线性纠正、噪声去除、坏点修复、色彩校正以及白平衡调整等,这些处理步骤对于提高图像质量和视觉效果至关重要。随着科技的进步,ISP芯片不仅提升了图像的清晰度和色彩准确性,还通过高效的算法增强了拍摄体验,尤其是在低光环境下的表现。

专注:太空算力、AI infra、异构调度、大模型成本工程 1223

【JavaSE与数据结构】Java集合框架之Set与Map及其相关实现类

本篇文章带大家认识集合框架—Set与Map及其相关实现类,这是关于集合框架的最后一篇文章,本文将介绍Set与Map及其相关实现类的使用,它们底层的实现原理暂不关心,重点是使用,后续文章将会介绍底层的原理。

未见花闻的博客 1923

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

【JavaSE系列】Java集合框架之Collection,Map接口

本篇文章带大家认识Java基础知识——集合框架,从本篇文章开始正式拉开数据结构的序幕,要深入了解一件事,那必然先得见个面,本文带大家认识Java集合框长什么样,以及怎么使用Collection和Map接口。

未见花闻的博客 1832

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

JavaSE——集合8:Map接口

JavaSE——集合8:Map接口

雷神乐乐的博客 861

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

JavaSE——集合之Map接口

Map接口是一种双列集合,它的每个元素都包含一个键对象Key和值对象Value,键和值对象之间存在一种对应关系,称为。从Map集合中访问元素时,只要指定了Key,就能找到对应的Value。

m0_62823517的博客 843

JavaSE基本知识补充 -Map集合

List集合:Set:Map是一个键值对的集合:我们如果想要从map中获得值,可以根据键MapMap:1,Map集合(无序)的数据结构实现只针对键有效,与值无关。2,存储的是键值对形式的元素,键唯一,值可重复。--和索引一样一个映射不能包含重复的键;-键不能重复每个键最多只能映射到一个值。键只允许有一个空值, -键不能重复值可以有多个空值。Map也是无序的 -键无序。

m0_75163045的博客 1651

javaSE基础学习笔记 day17 Map接口以及其实现类 Collections工具类

javaSE基础学习笔记 day17Map接口中的常用方法HashMap实现类LinkedHashMap实现类TreeMap实现类Properties实现类Collections工具类 Map接口中的常用方法 Object put(Object key,Object value):将指定key-value添加到(或修改)当前map对象中 void putAll(Map m):将m中的所有key-value对存放到当前map中 Object remove(Object key):移除指定key的key-va

yu1590的博客 190

JavaSE基础八----<集合(4)>【Map接口及其实现类 Collections类】

文章目录1.Map接口及其实现类1.1HashMap常用方法1.2TreeMap1.3HashTable2.Map接口的迭代通过一个方法遍历增强for循环迭代器遍历3.Collections类 1.Map接口及其实现类 Map的存储方式为键值对形式; key->value;双列存储; 一个键对应一个值;键不能重复,值是可以重复的. 1.1HashMap HashMap的默认容量为16,负载因子为0.75,即每当存储了3/4的元素后就会开始扩容,扩容速度为2倍. 当然,也可以使用构造方法来指定

从零开始的异世界JAVA学习 266

【JavaSE】Map接口--深入源码解读HashMap与HashTable

本文介绍了Map接口的常用方法与遍历方式,并深入源码对HashMap与HashTable的扩容机制进行了讲解。

黄小黄的博客 808

JavaSE学习笔记 Map集合框架以及Map接口的具体实现类:HashMap

Map集合框架前言 前言 在Java中我们经常要存储key-value这样形式的数据,这时我们要如何进行存储才能方便自己的使用。 案例:一个学校对学生进行建立档案,是将学生的学号与姓名进行批量保存,请你用自己的方法进行存储,并设法将学号与姓名能够取出 key(学号) Value(姓名) 张三 23 李四 24 王五 25 分析:前面我们学习过ArrayList集合,我们可以先使用ArrayList集合来进行存储学生的学号与姓名信息,并通过截取的方式来取出学号与姓名。 impo

qq_41537102的博客 493

5.javaSE基础__集合(List+Set+Map实现类)

双向链表结构,方便插入和删除元素,不支持快速访问Map是将键"key"映射到值"value"的对象Map接口提供三种collection 视图键集: keySet()值集: values()键-值集:entrySet()

m0_61086522的博客 1208

JavaSE-集合Map

1. 泛型能更早的发现错误,如类型转换错误2. 使用泛型,那么在编译期将会发现很多之前要在运行期发现的问题3. 代码量往往会少一些、运维成本减少4. 抽象层次上更加面向对象五、总结见:JavaSE-集合map总结.xmind六、作业。

qq_59737375的博客 875

javase --Map

Map与Collection并列存在。用于保存具有映射关系的数据:key-valueCollection集合称为单列集合,元素是孤立存在的(理解为单身)。Map集合称为双列集合,元素是成对存在的(理解为夫妻)。Map 中的 key 和 value 都可以是任何引用类型的数据。但常用String类作为Map的“键”。HashMapTreeMap和。其中,HashMap是 Map 接口使用频率最高的实现类。

qq_64005599的博客 932

JavaSE之集合知识点总结

JavaSE之集合知识点总结

weixin_44528963的博客 1070
上一篇: 【JavaSE_项目练习】用户登录注册
下一篇: 【JavaSE_学习笔记】Collections集合工具类
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值