测试Map接口中的常用方法

本文介绍了一个使用Java HashMap实现的Map接口方法测试案例。通过创建Employee类并实例化三个员工对象,将其存储在Map中,然后通过get方法检索特定键对应的员工信息。此测试验证了Map接口的基本操作。

测试Map接口中常用方法

package cn.hq.szxy;

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

/**
 * @author HQ
 * @e-mail ahmashq95@gmail.com
 * @date 2018/11/8.
 */
public class TestMap2 {

    public static void main(String[] args) {
        Employee e1 = new Employee(1001, "zhangsan", 2000);
        Employee e2 = new Employee(1002, "lisi", 10000);
        Employee e3 = new Employee(1003, "wangwu", 31000);
        Map<Integer, Employee> map = new HashMap<>();

        map.put(1001,e1);
        map.put(1002,e2);
        map.put(1003,e3);

        Employee employee=map.get(1001);
        System.out.println(employee.getEname());

        System.out.println(employee);
    }
}

class Employee {

    private int id;
    private String ename;
    private double salary;

    public Employee() {
    }

    public Employee(int id, String ename, double salary) {
        this.ename = ename;
        this.id = id;
        this.salary = salary;
    }

    public String getEname() {
        return ename;
    }

    public void setEname(String ename) {
        this.ename = ename;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    @Override
    public String toString() {
        return "id:"+id+"\n"+"name:"+ename+"\n"+"salary:"+salary;
    }
}

运行结果
在这里插入图片描述

<think>我们正在讨论Java中的Map接口及其常用方法。根据引用,Map是Java集合框架中用于存储键值对的重要接口。常见的实现类有HashMap、TreeMap和LinkedHashMap等。用户要求提供常用方法及代码示例。常用方法包括:1.put(Kkey,Vvalue):将指定的键值对添加到Map中。2.get(Objectkey):根据键获取对应的值。3.remove(Objectkey):根据键删除对应的键值对。4.containsKey(Objectkey):判断Map中是否包含指定的键。5.containsValue(Objectvalue):判断Map中是否包含指定的值。6.keySet():返回Map中所有键组成的Set集合。7.values():返回Map中所有值组成的Collection集合。8.entrySet():返回Map中所有键值对(Entry对象)组成的Set集合。9.size():返回Map中键值对的数量。10.clear():清空Map中的所有键值对。此外,引用[3]中提到了一个复制Map的例子,但要注意,直接使用赋值操作(MapclonedMap=userMap;)是浅拷贝,两个变量将引用同一个Map对象,修改其中一个会影响另一个。下面我们通过代码示例来展示这些方法的使用。</think>### Java Map 常用方法及代码示例 Map 是 Java 中存储**键值对(Key-Value)** 的核心接口,常见实现类包括 `HashMap`, `TreeMap`, `LinkedHashMap`。以下是常用方法及示例代码: #### 1. **添加/修改元素** ```java Map<String, Integer> map = new HashMap<>(); // 添加键值对 map.put("apple", 10); // {apple=10} map.put("banana", 5); // {apple=10, banana=5} // 覆盖已有键的值 map.put("apple", 15); // {apple=15, banana=5} ``` #### 2. **获取元素** ```java // 根据键获取值 int apples = map.get("apple"); // 15 // 获取不存在的键(返回null) Integer grapes = map.get("grapes"); // null // 带默认值的获取 int safeValue = map.getOrDefault("grapes", 0); // 0 ``` #### 3. **删除元素** ```java map.remove("banana"); // 移除键值对 → {apple=15} map.remove("apple", 10); // 条件删除(值不匹配,删除失败) ``` #### 4. **判断存在性** ```java boolean hasApple = map.containsKey("apple"); // true boolean hasValue5 = map.containsValue(5); // false ``` #### 5. **遍历 Map** ```java // 遍历键 for (String key : map.keySet()) { System.out.println("Key: " + key); } // 遍历值 for (Integer value : map.values()) { System.out.println("Value: " + value); } // 遍历键值对(推荐) for (Map.Entry<String, Integer> entry : map.entrySet()) { System.out.println(entry.getKey() + ": " + entry.getValue()); } // Java 8+ Lambda 遍历 map.forEach((k, v) -> System.out.println(k + "->" + v)); ``` #### 6. **其他实用方法** ```java int size = map.size(); // 获取元素数量 → 1 boolean isEmpty = map.isEmpty(); // 判断是否为空 → false map.clear(); // 清空Map → {} ``` #### 7. **合并 Map(Java 8+)** ```java Map<String, Integer> map2 = new HashMap<>(); map2.put("orange", 8); // 合并两个Map map2.forEach((k, v) -> map.merge(k, v, (oldVal, newVal) -> oldVal + newVal) ); // 结果:{apple=15, orange=8} ``` #### 8. **不可变 Map(Java 9+)** ```java Map<String, Integer> immutableMap = Map.of( "a", 1, "b", 2, "c", 3 ); // 尝试修改会抛出 UnsupportedOperationException ``` ### 关键注意事项 1. **键的唯一性**:每个键只能映射到一个值,重复 `put()` 会覆盖旧值。 2. **`null` 值处理**: - `HashMap`/`LinkedHashMap` 允许一个 `null` 键和多个 `null` 值 - `TreeMap` 不允许 `null` 键(会抛出 `NullPointerException`) 3. **浅拷贝问题**:直接赋值 (`Map newMap = oldMap`) 是**浅拷贝**,修改会影响原 Map。深拷贝需使用: ```java Map<String, Integer> deepCopy = new HashMap<>(oldMap); ``` > 示例完整代码可在此处测试:[Java Map 示例代码](https://replit.com/@JavaMapDemo)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值