Map容器(Java)

news2024/11/27 0:16:45

文章目录

    • 1.容器介绍
      • 1.1 容器接口结构
      • 1.2 简单解析
    • 2. 容器创建(Member functions)
    • 3. 访问操作(Element access)
      • 3.1 keySet()
      • 3.2 entrySet()
    • 4. 修改操作(Modifiers)
      • 4.1 put()
      • 4.2 remove()
      • 4.3 clear()
    • 5. 容量操作(Member functions)
      • 5.1 size()
      • 5.2 isEmpety()
    • 6. 其他操作(Other)
      • 6.1 containsKey() / containsValue()

1.容器介绍

1.1 容器接口结构

  a. Java存储结构
 Java当中按照存储结构可以划分成为两个大类,分别是单列集合 java.util.Collection 和 双列集合 java.util.Map, 顾名思义Collection是实现单列集合的根接口, 而Map则是实现双列集合(键值对)的根接口。

  b. 双列接口Map
在这里插入图片描述
 双列接口即为Map, 双列接口提供了一种映射关系即键值对的映射关系, 这是Map集合的核心即键–值对关系的存在,与此同时此接口下面也提供了许多不同的实现类,今天我们使用HashMap这个实现类进行Map通用方法的举例和应用.

  c. Map接口 : 键值对 + 键唯一
  需要注意的是Map接口的共同属性肯定是键值对 + 键唯一的特性的, 但是对于不同底层实现类所实现的Map接口可能因为使用的数据结构不同所导致会有一些性能的不同 ,这些性能的不同可能体现在存储顺序方面(有序或者无序)等,因为不同的底层数据结构的实现就会导致不同的结果,例如对于HashMap单纯的运用哈希表来完成这个结构,那么显然它是无法记录存储顺序的,但是对于LinkedHashMap 的实现就不一样,它还往里面加入了一个双重列表,此列表会记录下迭代的顺序从而保证了之后访问的顺序可以和存储的顺序一致。

1.2 简单解析

 A. 包路径:java.util.Map
 B. Map核心:键值对 + 键唯一
 C. 注意:下面我们将使用HashMap<K, V> 这个实现类进行Map接口的实现和举例,我们将举例的是Map接口的通用方法,对于所有Map接口下的实现类都可以通用
 D. 常用实现类举例:
  HashMap实现类 : 无序 + 键唯一 + 值可重复
在这里插入图片描述

2. 容器创建(Member functions)

  HashMap实现类创建 :

import java.util.HashMap;
import java.util.Set;
public class Main {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
	}
}

3. 访问操作(Element access)

  元素获取
在这里插入图片描述

3.1 keySet()

在这里插入图片描述

import java.util.HashMap;
import java.util.Set;
public class Main {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
		hashMap.put(1,10); hashMap.put(2, 20);

		Set<Integer> set = hashMap.keySet();
		for(Integer key : set){
			Integer value = hashMap.get(key);
			System.out.println(key + " " + value); // 1 10 --- 2 20
		}
	}
}

3.2 entrySet()

在这里插入图片描述

import java.util.HashMap;
import java.util.Set;
public class Main {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
		hashMap.put(1,10); hashMap.put(2, 20);

		Set<Map.Entry<Integer, Integer>> set = hashMap.entrySet();
		for(Map.Entry<Integer, Integer> it : set){ // 1 10 -- 2 20
			Integer key = it.getKey();
			Integer value = it.getValue();
			System.out.println(key + " " + value);
		}
	}
}

4. 修改操作(Modifiers)

4.1 put()

在这里插入图片描述

import java.util.HashMap;
import java.util.Set;
public class Main {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();
		hashMap.put(1,10); hashMap.put(2, 20);

		Set<Integer> set = hashMap.keySet();
		for(Integer key : set){
			Integer value = hashMap.get(key);
			System.out.println(key + " " + value); // 1 10 --- 2 20
		}
	}
}

4.2 remove()

在这里插入图片描述

import java.util.HashMap;
import java.util.Set;
public class Main {
	public static void print(HashMap<Integer, Integer> hashMap){
		Set<Integer> set = hashMap.keySet();
		for(Integer key : set){
			Integer value = hashMap.get(key);
			System.out.println(key + " " + value); // 1 10 --- 2 20
		}
	}
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();

		hashMap.put(1,10); hashMap.put(2, 20);
		print(hashMap); // 1 10 --- 2 20
		hashMap.remove(1);
		print(hashMap); // 2 20
	}
}

4.3 clear()

在这里插入图片描述

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

public class Main {
	public static void print(HashMap<Integer, Integer> hashMap){
		Set<Integer> set = hashMap.keySet();
		for(Integer key : set){
			Integer value = hashMap.get(key);
			System.out.println(key + " " + value); // 1 10 --- 2 20
		}
	}
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();

		hashMap.put(1,10); hashMap.put(2, 20);
		hashMap.clear();
		print(hashMap); // 
	}
}

5. 容量操作(Member functions)

5.1 size()

在这里插入图片描述

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

public class Main {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();

		hashMap.put(1,10); hashMap.put(2, 20);
		System.out.println(hashMap.size()); // 2
	}
}

5.2 isEmpety()

在这里插入图片描述

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

public class Main {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();

		hashMap.put(1,10); hashMap.put(2, 20);
		System.out.println(hashMap.isEmpty()); // false
	}
}

6. 其他操作(Other)

6.1 containsKey() / containsValue()

在这里插入图片描述

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

public class Main {
	public static void main(String[] args) {
		HashMap<Integer, Integer> hashMap = new HashMap<Integer, Integer>();

		hashMap.put(1,10); hashMap.put(2, 20);
		System.out.println(hashMap.containsKey(1)); // true
		System.out.println(hashMap.containsKey(3)); // false
		System.out.println(hashMap.containsValue(20)); // true
		System.out.println(hashMap.containsValue(15)); // false
	}
}

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

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

相关文章

用Swagger生成接口,pom中少了一个library参数,排查了几个小时

前言&#xff1a; 我们一般都会使用swagger生成restful接口&#xff0c;这样可以省不少时间&#xff0c;将更多的精力专注于写业务上。但接口也不是经常写&#xff0c;所以&#xff0c;swagger用的也不熟练。尤其是我喜欢拿之前的接口copy一份&#xff0c;然后在此基础上进行修…

1、springcloud环境搭建

目录 1、创建一个父项目 ​编辑 2、创建子项目 2.1创建订单系统-order ​编辑 2.2创建库存系统-stock 3、创建rest服务 3.1添加web依赖 3.2编写controller 3.3订单中需要调用库存中的扣减库存的接口 通过idea开发工具进行搭建 1、创建一个父项目 通过spring initializr…

QT day4 (time/tcp/draw)

如图所示设计一个闹钟 1、头文件 #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QColor> #include <QDebug> #include <QMessageBox> #include <QTimer> //定时器类的头文件 #include <QTime> …

搞定剑桥面试数学题番外篇2:使用多线程并发“加强版”

0. 概览 我们在之前三篇博文中已经介绍了如何用多种语言&#xff08;ruby、swift、c、x64 汇编和 ARM64 汇编&#xff09;实现一道“超超超难”的剑桥数学面试题&#xff1a; 有趣的小实验&#xff1a;四种语言搞定“超超超难”剑桥面试数学题 搞定“超超超难”剑桥面试数学…

【每日挠头算法题(7)】对称的二叉树|二叉树的所有路径

欢迎&#xff01; 前言一、对称的二叉树思路&#xff1a;递归法具体代码如下&#xff1a; 二、二叉树的所有路径思路&#xff1a;递归法具体代码如下&#xff1a; 总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;随着人工智能的不…

如何快速选择合适的会计软件?这些推荐值得尝试!

现今&#xff0c;许多公司都在使用会计软件来管理它们的财务&#xff0c;提高工作效率。因此选择一个适合自己公司的会计软件是相当重要的。但是&#xff0c;对于许多小型企业而言&#xff0c;如何选择最适合自己的会计软件并不容易。那么&#xff0c;该如何选择合适的会计软件…

开启跨平台之旅:学习Flutter,掌握移动应用开发的未来

Flutter是一种开源的移动应用开发框架&#xff0c;由Google开发和维护。它使用Dart语言进行编写&#xff0c;并提供了丰富的UI组件和工具&#xff0c;用于构建高性能、跨平台的移动应用程序。 优势 跨平台开发&#xff1a;Flutter是一种跨平台的移动应用开发框架&#xff0c;…

管理类联考——英语——技巧篇——时态表

一般现在时 1.概念&#xff1a;经常、反复发生的动作或行为及现在的某种状况。 2.基本结构&#xff1a;①is/am/are;②do/does否定形式&#xff1a;①am/is/are not;②此时态的谓语动词若为行为动词&#xff0c;则在其前加don‘t&#xff0c;如主语为第三人称单数&#xff0c…

资深测试总结,性能测试-业务量/吞吐量/存量数据设计关联(详细)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 业务量 是不带时…

HTML | html文档中html和body标签的默认尺寸是多少?

新建一个空白的html文件&#xff0c;如下&#xff1a; <!DOCTYPE html> <html lang"en"><head><title></title><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-sc…

day56|动态规划16-编辑距离问题

583. 两个字符串的删除操作 明确dp数组的含义&#xff1a; dp[i][j] 以i-1为结尾的word1和以j-1为结尾的word2&#xff0c;为相同的最小操作次数递归函数&#xff1a; if word1[i-1] word1[j-1]: dp[i][j] dp[i-1][j-1] # 不需要删除&#xff0c;只看上一层的字符串即可 else…

阿里云如何帮助企业进行数据迁移和数据同步?有哪些应用案例?

阿里云如何帮助企业进行数据迁移和数据同步&#xff1f;有哪些应用案例&#xff1f; [本文由阿里云代理商[聚搜云www.4526.cn]撰写] 阿里云数据迁移与数据同步解决方案 阿里云为企业提供了一系列高效、安全并应对不同场景需求的数据迁移与同步服务。这些服务旨在最大范围减少企…

Seata学习 @GlobalTransactional注解的作用

Seata学习 GlobalTransactional注解的作用 1.自动配置类 SeataAutoConfiguration 引入 seata与SpringBoot的整合包后&#xff0c;基于SpringBoot的自动配置&#xff0c;会往Spring容器中自动添加 SeataAutoConfiguration 而 SeataAutoConfiguration 配置类又会往容器中添加be…

基于Java汽车客运站管理系统设计实现(源码+lw+部署文档+讲解等)

博主介绍&#xff1a; ✌全网粉丝30W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战 ✌ &#x1f345; 文末获取源码联系 &#x1f345; &#x1f447;&#x1f3fb; 精…

TrafficRoute:一体化的DNS解析和流量调度套件

TrafficRoute是火山引擎推出的解析调度套件&#xff0c;它实现了“一体化”的解析和调度服务&#xff0c;覆盖「公网解析」、「私网解析」、「流量调度/容灾」等场景&#xff0c;提供高性能、高可用、精准、及时、安全和可定制的解析调度产品集。 TrafficRoute具备云解析 DNS、…

华为OD机试真题 JavaScript 实现【字符串通配符】【2022Q4 200分】

一、题目描述 问题描述&#xff1a;在计算机中&#xff0c;通配符一种特殊语法&#xff0c;广泛应用于文件搜索、数据库、正则表达式等领域。现要求各位实现字符串通配符的算法。 要求&#xff1a; 实现如下2个通配符&#xff1a; &#xff1a;匹配0个或以上的字符&#xf…

【一文解决】已安装CUDA与Pytorch但torch.cuda.is_available()为False

目录 问题描述总览&#xff1a;导致问题的原因可能1&#xff1a;CUDA版本与驱动程序不兼容可能2&#xff1a;CUDA库的路径设置存在问题可能3&#xff1a;PyTorch版本与CUDA版本不匹配可能4&#xff1a;编译问题可能5&#xff1a;软件包或库冲突写在最后 问题描述 已经安装CUDA…

2023 陕西省大学生网络安全技能大赛 --- 高职组 Crypto ezmath

文章目录 题目解题过程 题目 from Crypto.Util.number import * from secret import y,a,b flagbflag{} l len(flag) m1, m2 flag[: l // 2], flag[l // 2:]x bytes_to_long(m1) c bytes_to_long(m2)assert (x**21)*(y**21)-2*(xy)*(x*y1)gift-4*x*y 4*b**6-2*a**33*a*c …

JavaScript案例分享:让前端开发者抓狂的按钮

前言 我分享一个前端案例&#xff0c;代码来源我不确定&#xff0c;可能是我某个编程技术交流群的群友分享的。由于我设置了自动下载文件&#xff0c;今天在查看微信文件时偶然发现了这个案例&#xff0c;查看下载日期是6月7日&#xff0c;所以无法确定到底是哪个群友分享的。但…

618,你会入手哪些书?【文末送书】

好书分享 前沿技术人工智能半导体新一代通信与信息技术网络空间安全参与规则 一年一度的618又到啦&#xff01;今年的618就不要乱买啦&#xff0c;衣服买多了会被淘汰&#xff0c;电子产品买多了会过时&#xff0c;零食买多了会增肥&#xff0c;最后怎么看都不划算。可是如果你…