Java 基础教程

Java Map(映射)

在 Java 中,Map 是一种键值对的集合,它是 Java 集合框架中的一种接口,位于 java.util 包中。Map 接口提供了高效的键值对存储和查找功能,适用于需要通过键来查找值的场景。它可以用于存储和操作关联数据,如字典、配置信息、缓存等。

Map 接口特点

Map 接口的特点包括:

(1)键值对:Map中的元素是以键值对的形式存储的,每个键对应一个值。

(2)键的唯一性:Map中的键是唯一的,不允许重复。

(3)值的重复性:Map中的值可以重复,允许多个键对应相同的值。

(4)无序性:Map中的元素没有固定的顺序,不保证元素的存储顺序和插入顺序一致。

Map 常用方法

Map 接口定义了一系列方法用于对集合进行操作,包括但不限于以下常用方法:

  • 添加键值对:put(K key, V value)。

  • 获取值:get(Object key)。

  • 判断键是否存在:containsKey(Object key)。

  • 判断值是否存在:containsValue(Object value)。

  • 删除键值对:remove(Object key)。

  • 获取键值对数量:size()。

  • 遍历键值对:forEach(BiConsumer<? super K, ? super V> action)、entrySet() 等。

Map 常用实现类

常用的 Map 实现类有:

  • HashMap:使用哈希表实现,对键进行散列存储,支持快速查找,不保证键值对的顺序。

  • TreeMap:使用红黑树实现,对键进行排序存储,键按照自然顺序或指定的比较器进行排序。

  • LinkedHashMap:使用哈希表和链表实现,保持键值对的插入顺序,同时支持快速查找。

Map 示例

下面是一个Java Map的完整示例,展示了Map的基本用法:

import java.util.HashMap;
import java.util.Map;

public class MapExample {
   public static void main(String[] args) {
       // 创建一个HashMap对象
       Map<String, Integer> map = new HashMap<>();

       // 添加键值对
       map.put("Apple", 10);
       map.put("Banana", 20);
       map.put("Orange", 15);
       map.put("Apple", 5); // 添加重复键,会覆盖原有的值

       // 获取键值对数量
       System.out.println("键值对数量:" + map.size());

       // 判断键是否存在
       System.out.println("是否包含键\"Apple\":" + map.containsKey("Apple"));
       System.out.println("是否包含键\"Grape\":" + map.containsKey("Grape"));

       // 判断值是否存在
       System.out.println("是否包含值20:" + map.containsValue(20));
       System.out.println("是否包含值30:" + map.containsValue(30));

       // 获取值
       System.out.println("键\"Apple\"对应的值:" + map.get("Apple"));

       // 遍历键值对
       System.out.println("遍历键值对:");
       for (Map.Entry<String, Integer> entry : map.entrySet()) {
           String key = entry.getKey();
           Integer value = entry.getValue();
           System.out.println(key + ": " + value);
       }

       // 删除键值对
       map.remove("Banana");
       System.out.println("删除后的键值对:" + map);
   }
}

运行示例,输出结果:

键值对数量:3
是否包含键"Apple":true
是否包含键"Grape":false
是否包含值20:true
是否包含值30:false
键"Apple"对应的值:5
遍历键值对:
Apple: 5
Orange: 15
Banana: 20
删除后的键值对:{Apple=5, Orange=15}

在上面的示例中,我们首先创建了一个 HashMap 对象,并使用 put() 方法向 Map 中添加键值对。由于 Map 不允许重复的键,添加重复键时,会覆盖原有的值。

然后,使用 size() 方法获取键值对的数量,并使用 containsKey() 方法判断键是否存在,使用 containsValue() 方法判断值是否存在。

接下来,使用 get() 方法获取指定键对应的值,并使用 entrySet() 方法返回包含所有键值对的 Set 集合。然后,使用 for-each 循环遍历键值对,并使用 getKey() 和 getValue() 方法获取键和值。

最后,使用 remove() 方法删除指定键值对。

Map 的更多方法及详细用法请参考Java API

说说我的看法
全部评论(
没有评论
关于
本网站专注于 Java、数据库(MySQL、Oracle)、Linux、软件架构及大数据等多领域技术知识分享。涵盖丰富的原创与精选技术文章,助力技术传播与交流。无论是技术新手渴望入门,还是资深开发者寻求进阶,这里都能为您提供深度见解与实用经验,让复杂编码变得轻松易懂,携手共赴技术提升新高度。如有侵权,请来信告知:hxstrive@outlook.com
公众号