Java 中Map 的用法详解

Java 中 Map 的用法详解

简介

Map 是 Java 中常见的一种数据结构,它存储了一组键值对,其中每个键都唯一对应一个值,而多个键可以对应同一个值。在 Map 中,通过键快速定位对应的值,相对于遍历数组或者列表来说,速度更快。在 Java 中,Map 接口有多个实现类,其中常用的有 HashMap 和 TreeMap。

常用方法介绍

1. put 方法

public V put(K key, V value);

put 方法用于向 Map 中添加键值对,如果 Map 中已经存在该键,则会将旧值替换为新值,并返回旧值。

示例:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 18);
map.put("Jerry", 21);
map.put("Tom", 20);
System.out.println(map.get("Tom"));  // 20

2. get 方法

public V get(Object key);

get 方法用于获取 Map 中指定键对应的值,如果该键不存在,则返回 null。

示例:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 18);
System.out.println(map.get("Tom"));  // 18
System.out.println(map.get("Jerry"));  // null

3. remove 方法

public V remove(Object key);

remove 方法用于从 Map 中删除指定键对应的键值对,并返回该键对应的值,如果该键不存在,则返回 null。

示例:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 18);
System.out.println(map.remove("Jerry"));  // null
System.out.println(map.remove("Tom"));  // 18

4. keySet 方法

public Set<K> keySet();

keySet 方法用于获取 Map 中所有键的集合。

示例:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 18);
map.put("Jerry", 21);
Set<String> keys = map.keySet();
for (String key : keys) {
    System.out.println(key + ": " + map.get(key));
}

输出:

Tom: 18
Jerry: 21

5. entrySet 方法

public Set<Map.Entry<K, V>> entrySet();

entrySet 方法用于获取 Map 中所有键值对的集合。

示例:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 18);
map.put("Jerry", 21);
Set<Map.Entry<String, Integer>> entries = map.entrySet();
for (Map.Entry<String, Integer> entry : entries) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

输出:

Tom: 18
Jerry: 21

6. size 方法

public int size();

size 方法用于获取 Map 中键值对的数量。

示例:

Map<String, Integer> map = new HashMap<>();
map.put("Tom", 18);
map.put("Jerry", 21);
System.out.println(map.size());  // 2

示例

示例一:计算字符串中每个字符出现的次数

String str = "Hello, world!";
Map<Character, Integer> map = new HashMap<>();
for (char c : str.toCharArray()) {
    if (map.containsKey(c)) {
        map.put(c, map.get(c) + 1);
    } else {
        map.put(c, 1);
    }
}
for (Map.Entry<Character, Integer> entry : map.entrySet()) {
    System.out.println(entry.getKey() + ": " + entry.getValue());
}

输出:

H: 1
e: 1
l: 3
o: 2
,: 1
 : 1
w: 1
r: 1
d: 1
!: 1

示例二:多重映射

Map<String, List<Integer>> map = new HashMap<>();
List<Integer> list1 = new ArrayList<>();
list1.add(1);
list1.add(2);
List<Integer> list2 = new ArrayList<>();
list2.add(3);
list2.add(4);
map.put("key1", list1);
map.put("key2", list2);
System.out.println(map.get("key1"));  // [1, 2]
System.out.println(map.get("key2"));  // [3, 4]

总结

本文介绍了 Java 中 Map 接口的常用方法以及两个示例,希望能为读者在实际开发中使用 Map 提供一些帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 中Map 的用法详解 - Python技术站

(0)
上一篇 2023年5月26日
下一篇 2023年5月26日

相关文章

  • Java HttpURLConnection超时和IO异常处理

    Java中的HttpURLConnection是HTTP协议的实现,是进行HTTP通信的基础。在使用HttpURLConnection进行网络请求时,会遇到超时和IO异常等问题,需要进行相应的处理。本文将详细讲解如何处理HttpURLConnection超时和IO异常。 HttpURLConnection超时处理 超时类型 HttpURLConnection…

    Java 2023年5月27日
    00
  • 修改Tomcat运行时jvm编码问题

    下面是修改Tomcat运行时jvm编码问题的完整攻略: 1. 了解Tomcat jvm编码问题 Tomcat是一个开源的Web应用服务器,使用Java语言编写,可以运行Java Web应用程序。在使用Tomcat时,我们有时会遇到在Tomcat运行时出现乱码的问题,这是由于Tomcat运行时jvm编码设置不正确所导致的。 jvm是Java Virtual M…

    Java 2023年5月20日
    00
  • 详解springmvc之json数据交互controller方法返回值为简单类型

    下面是详解springmvc之json数据交互controller方法返回值为简单类型的攻略。 什么是Spring MVC? Spring MVC是一个基于Java的Web框架,用于开发Web应用程序。它使用Java Servlet API和为其定义的JavaServer Pages(JSP)规范来实现Web组件。 什么是JSON? JSON(JavaScr…

    Java 2023年5月26日
    00
  • java数组排列组合问题汇总

    Java数组排列组合问题汇总 在Java中,排列组合是一个常见的问题。本文将介绍如何使用Java处理排列组合问题。 一、排列问题 1.1 什么是排列? 排列是指从多个元素中选出一定数量的元素按一定的顺序排列成一列的不同情况。 1.2 Java中如何实现排列? Java中可以使用递归实现排列。下面是一个示例代码: public static void perm…

    Java 2023年5月26日
    00
  • 常见的Java缓存框架有哪些?

    常见的Java缓存框架有很多,其中比较流行的包括:Ehcache、Guava Cache、Redis、Caffeine等。 Ehcache Ehcache是一个开源的Java缓存框架,使用简单并且支持多种缓存策略,例如内存缓存和持久化缓存等。首先,我们需要在项目中添加Ehcache的依赖,然后使用如下代码来创建和获取缓存实例: CacheManager ca…

    Java 2023年5月11日
    00
  • Java实现接口限流方案

    Java实现接口限流,通常有三种方案,分别是计数器算法、令牌桶算法和漏桶算法。下面分别介绍这三种方案的实现方法和代码示例。 1. 计数器算法 计数器算法的核心思想是,对窗口内的API请求进行计数,当计数超过设定的阈值时,拒绝请求。其中,窗口有两种实现方式:滑动窗口和计时窗口。 滑动窗口的实现方法如下(以限制1秒内请求不超过5次为例): 1.1 代码实现 im…

    Java 2023年5月19日
    00
  • 详解springboot采用多数据源对JdbcTemplate配置的方法

    请您耐心阅读以下攻略,我将分为以下几个部分进行讲解: Spring Boot多数据源配置 JdbcTemplate添加多数据源支持 示例代码 1. Spring Boot多数据源配置 在Spring Boot中配置多数据源其实非常简单,只需要在application.properties(或application.yml)中配置多组数据源即可。以下是一个简单…

    Java 2023年5月20日
    00
  • java 获取路径的各种方法(总结)

    Java 获取路径的各种方法(总结) 在Java编程中,获取路径是经常会使用到的操作。本文将总结Java中获取路径的各种方法。 方法一:System.getProperty(“user.dir”) 使用System.getProperty(“user.dir”)可以获取当前项目的根路径。 String projectPath = System.getProp…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部