333333333333

news2024/11/25 1:31:38

一、Map 接口

        接下来讲的都是基于 jdk8 来开展的。

1.1 特点

        1、Map Collection 并列存在。Map 是用于保存具有映射关系的数据,即 key-value

        2、Map 中的 key value 可以是任何引用类型的数据类型。

        3、Map 中的 key 不允许重复,原因和 HashSet 一样。

        4、Map 中的 value 是可以重复的。

        5、Map 中的 key 可以为 nullvalue 也可以为 null,注意 key null 时只能有一个,value null 时可以有多个。

        6、常用 String 类作为 Map key

        7、key value 之间存在单向一对一关系,即通过指定的 key 总能找到对于的 value

        8、Map 存放数据的 key-value 示意图,一对 key-value 是放在一个 Node 中的,又因为 Node 实现了 Entry 接口,也有人说是一对 key-value 就是一个 Entry

1.2 常用实现类

        HashMapHashTableSortedMap(接口)、TreeMap LinkedHashMapProperties 等。

1.3 常用方法

public class TestMap {
    public static void main(String[] args) {
        Map map = new HashMap<>();

        // put 添加元素
        map.put("孙悟空","唐僧");
        map.put("孙悟空","猪八戒");
        map.put("宋江","潘金莲");
        map.put("武大郎","西门庆");
        map.put("曹操",null);
        map.put(null,"荀彧");

        // get 根据 key 获取元素
        Object o = map.get("武大郎");
        // 根据 key 删除元素
        map.remove("宋江");
        // 判断 key 是否存在
        boolean b = map.containsKey(null);
        System.out.println(b);
        // 获取 map 的元素个数
        System.out.println(map.size());
        // 判断 map 元素个数是否为 0
        System.out.println(map.isEmpty());
        // 清除 map
        map.clear();

    }
}

1.4 遍历方式

1.4.1 keySet 方式

public static void main(String[] args) {
	Map map = new HashMap<>();
	map.put("孙悟空","唐僧");
	map.put("武大郎","西门庆");

	// 先取出所有的 key,然后再取出 value
	Set keySet = map.keySet();
	// (1) 使用增强 for 循环
	for (Object obj :keySet) {
		System.out.println(obj+"-"+map.get(obj));
	}
	System.out.println("-----------------------");
	// (2) 迭代器
	Iterator iterator = keySet.iterator();
	while (iterator.hasNext()) {
		Object next =  iterator.next();
		System.out.println(next+"-"+map.get(next));
	}
}

1.4.2 value 值方式

public static void main(String[] args) {
	Map map = new HashMap<>();
	map.put("孙悟空","唐僧");
	map.put("武大郎","西门庆");

	// 只能取出所有的 values
	Collection values = map.values();
	// (1) 增强 for 循环
	for (Object obj :values) {
		System.out.println(obj);
	}
	System.out.println("-----------------------");
	//(2)迭代器
	Iterator iterator1 = values.iterator();
	while(iterator1.hasNext()){
		Object next = iterator1.next();
		System.out.println(next);
	}
}

1.4.3 EntrySet 方式

public static void main(String[] args) {
	Map map = new HashMap<>();
	map.put("孙悟空","唐僧");
	map.put("武大郎","西门庆");
	
	Set set = map.entrySet();
	// (1) 增强 for 循环
	for (Object entry :set) {
		// 将 entry 转换成 Map.Entry
		Map.Entry m = (Map.Entry)entry;
		System.out.println(m.getKey()+"-"+m.getValue());
	}
	System.out.println("-----------------------");
	// (2) 迭代器
	Iterator iterator2 = set.iterator();
	while (iterator2.hasNext()) {
		Map.Entry m=  (Map.Entry) iterator2.next();
		System.out.println(m.getKey()+"-"+m.getValue());
	}
}

1.5 习题练习

        使用 HashMap 添加 3 个员工对象,要求:键为员工 id,值为员工对象。并遍历显示工资 > 18000 员工(遍历方式最少两种)。员工类:姓名、工资、员工 id

class Employee{
    private String id;
    private String name;
    private double salary;

    public Employee(String id, String name, double salary) {
        this.id = id;
        this.name = name;
        this.salary = salary;
    }
   // setter、getter、toString

    @Override
    public String toString() {
        return "Employee{" +
                "id='" + id + '\'' +
                ", name='" + name + '\'' +
                ", salary=" + salary +
                '}';
    }
}
public static void main(String[] args) {

	Map map = new HashMap();
	Employee e1 = new Employee("1","张三",20000);
	Employee e2 = new Employee("2","李四",8000);
	Employee e3 = new Employee("3","王五",60000);
	map.put(e1.getId(),e1);
	map.put(e2.getId(),e2);
	map.put(e3.getId(),e3);

	Set set = map.keySet();
	for (Object key :set) {
		Employee employee = (Employee)map.get(key);
		if(employee.getSalary()>18000){
			System.out.println(key+"-"+employee);
		}
	}
	System.out.println("--------------");
	Iterator iterator = set.iterator();
	while (iterator.hasNext()) {
		Object key =  iterator.next();
		Employee employee = (Employee)map.get(key);
		if(employee.getSalary()>18000){
			System.out.println(key+"-"+employee);
		}
	}
	System.out.println("--------------");
	Set set1 = map.entrySet();
	for (Object entrySet :set1) {
		Map.Entry entry =  (Map.Entry)entrySet;
		Employee employee = (Employee) entry.getValue();
		if(employee.getSalary()>18000){
			System.out.println(entry.getKey()+"-"+employee);
		}
	}
}

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

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

相关文章

如何将极狐GitLab 漏洞报告导出为 HTML 或 PDF 格式或导出到 Jira

目录 导出为 HTML/PDF 将漏洞信息导出到 Jira 参考资料 极狐GitLab 的漏洞报告功能可以让开发人员在统一的平台上面管理代码&#xff0c;对其进行安全扫描、管理漏洞报告并修复漏洞。但有些团队更喜欢使用类似 Jira 的单独工具来管理他们的安全漏洞。他们也可能需要以易于理…

穿越国界的数字金融:探析中国跨境B2C电商支付的前景与机遇

随着全球数字化浪潮的不断涌现&#xff0c;中国的跨境B2C电商市场正迅速崭露头角&#xff0c;成为世界上最具活力和潜力的市场之一。中国的消费者越来越愿意购买来自国外的产品&#xff0c;而数字金融技术的不断发展也为这一趋势的崛起提供了坚实的基础。 在这篇文章中&#x…

Python数据分析:在职场中的竞争优势

前言 在职场中&#xff0c;技能的重要性是不言而喻的。越来越多的职位要求员工具备数据分析能力&#xff0c;而Python作为一种强大的数据分析工具&#xff0c;正在成为职场中的“利器”。然而&#xff0c;尽管Python数据分析提供了巨大的优势&#xff0c;许多人依然未能掌握这…

前世档案c

题目描述 网络世界中时常会遇到这类滑稽的算命小程序&#xff0c;实现原理很简单&#xff0c;随便设计几个问题&#xff0c;根据玩家对每个问题的回答选择一条判断树中的路径&#xff08;如下图所示&#xff09;&#xff0c;结论就是路径终点对应的那个结点。 现在我们把结论…

CentOS 7使用RPM包安装MySQL5.7

目标 本文目标是简单介绍如何在CentOS 7上使用RPM包安装MySQL 5.7&#xff0c;然后描述如何调整存储路径datadir。 环境准备 操作系统 —— CentOS 7MySQL版本 —— MySQL 5.7.44 获取MySQL-rpm包 官网下载地址&#xff1a;https://dev.mysql.com/downloads/mysql/5.7.htm…

MySQL复习总结(一):基础篇

文章目录 一、MySQL概述二、SQL语句2.1 SQL分类2.2 DDL语言2.2.1 数据库操作2.2.2 表操作:通用2.2.3 表操作:修改2.2.4 表操作:删除 2.3 DML语言2.3.1 添加数据2.3.2 修改数据2.3.3 删除数据 2.4 DQL语言2.5 DCL语言 三、函数四、约束五、多表查询5.1 多表关系 六、事务6.1 事务…

实验三:Intent与Activity的使用

实验三&#xff1a;Intent与Activity的使用 3.1 实验目的 本次实验旨在帮助大家熟练掌握Intent和Activity的使用。Intent的最常见用途是绑定应用程序组件&#xff0c;它能够在应用程序的Activity之间启动、停止和传输数据。同时&#xff0c;我们还将通过添加用户名和密码的示…

【C++初阶】类与对象(二)

目录 前言&#xff1a;一、构造函数1.1 构造函数概念1.2 为什么有构造函数1.3 构造函数的写法及使用1.4 默认构造函数1.5 哪些可为默认构造函数 二、析构函数2.1 析构函数概念2.2 为什么有析构函数2.3析构函数的写法及使用2.4 默认析构函数 三、拷贝构造函数3.1 拷贝构造函数概…

制造行业数字化运维破局之道

项目背景 某大型汽车制造集团&#xff0c;致力于通过数字化、智能化运营手段为用户提升提供高品质的汽车产品和服务。IT部门不仅为内外部持续提供服务&#xff0c;同时为业务运营与核心系统运行提供重要支撑。数字化运维作为数字化转型的核心基础&#xff0c;不但要保障数据安…

CSDN规则详解(一)

文章目录 前言CSDN博客用户准则总则博客注册博客行为规则被投诉侵权用户处理规则附则 博客积分规则博客等级博客VIP文章说明后记 前言 CSDN是一个专业的技术社区&#xff0c;不仅可以分享自己的技术经验&#xff0c;还可以向其他行业专业人士学习。在CSDN上写出优秀的博客可以…

管理如何实现制度流程化 流程表单化 表单信息化 信息标准化?

业务化、流程化、信息化、数字化、自动化、智能化&#xff0c;是企业业务管理发展路径的六个必经阶段 制度业务化&#xff0c;业务表单化&#xff0c;表单流程化、流程信息化、信息标准化、标准制度华。 制度流程化、流程表单化、表单信息化、信息标准化、标准制度华。 管理…

Linux软件安装包管理器yum

Linux软件安装 Linux软件安装的本质 ​ 对于安装软件最基本的理解就是把可执行程序拷贝到指定路径下&#xff0c;我们知道直接输入指令就可以实现想要的功能&#xff0c;这些指令本质上都是放在指定路径下的可执行文件&#xff0c;如果我们把写好的程序编译后的可执行文件放到…

优维低代码实践:打包发布

导语 优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。…

MES系统生产看板

在现代制造业中&#xff0c;生产看板是一种重要的工具&#xff0c;用于实时监控和管理生产过程。而随着制造执行系统&#xff08;MES&#xff09;的发展&#xff0c;生产看板已经得到了数字化的升级和优化。 一、MES系统生产看板的概述 MES系统生产看板是制造执行系统在生产现…

客服发送一条消息背后的技术和思考

一、引言 在企业客服场景中&#xff0c;客服发送一条消息的背后&#xff0c;需要考虑网络通信、前端展示、后端存储以及安全性等多个方面的技术支持&#xff0c;单从前端层面来说&#xff0c;就需要考虑到消息的显示、状态更新、稳定传输以及极限操作消息不卡顿等场景&#xf…

Iceberg 基础知识与基础使用

1 Iceber简介 1.1 概述 为了解决数据存储和计算引擎之间的适配的问题&#xff0c;Netflix开发了Iceberg&#xff0c;2018年11月16日进入Apache孵化器&#xff0c;2020 年5月19日从孵化器毕业&#xff0c;成为Apache的顶级项目。 Iceberg是一个面向海量数据分析场景的开放表格…

Adobe After Effects 2024(Ae2024)在新版本中的升级有哪些?

After Effects 2024是Adobe公司推出的一款视频处理软件&#xff0c;它适用于从事设计和视频特技的机构&#xff0c;包括电视台、动画制作公司、个人后期制作工作室以及多媒体工作室。通过After Effects&#xff0c;用户可以高效且精确地创建无数种引人注目的动态图形和震撼人心…

新零售实用小技巧,大神都在用!

自动售货机&#xff0c;作为一种融合了数字技术和零售业的创新&#xff0c;正迅速改变着我们的购物习惯和零售商的经营方式。 这一技术趋势不仅为零售业带来了新的商机&#xff0c;也为消费者提供了更为便捷和个性化的购物体验。自动售货机不再仅仅是传统的商品分发设备&#x…

教师减负神器

在传统的成绩管理模式中&#xff0c;教师需要手动输入、整理、分析成绩数据&#xff0c;工作量大且繁琐。这不仅耗费了教师大量的时间和精力&#xff0c;还容易出现错误。为了解决这个问题&#xff0c;我们可以通过各种代码和Excel来实现学生自助查询成绩的功能。 一、建立成绩…

深度学习之基于Tensorflow卷积神经网络学生课堂坐姿姿势识别系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 基于Tensorflow的卷积神经网络学生课堂坐姿姿势识别系统介绍 Tensorflow是一个流行的开源机器学习框架&#xff0c…