📜  Java中的 SortedMap remove() 方法及示例(1)

📅  最后修改于: 2023-12-03 15:01:56.872000             🧑  作者: Mango

Java中的 SortedMap remove() 方法及示例

SortedMap简介

在Java中,SortedMap是Map接口的一个子接口,他拥有基本的add、remove、get等方法,但SortedMap与普通的Map最大的区别在于它保证了元素顺序的有序性,同时也提供了部分额外的方法。

SortedMap接口有两种实现方式:TreeMap和ConcurrentSkipListMap(在Java8中新增)。其中,TreeMap使用的是红黑树数据结构,而ConcurrentSkipListMap使用的是跳表数据结构。

SortedMap remove()方法

SortedMap中的remove()方法用于删除指定键所对应的元素。该方法的声明如下:

V remove(Object key)

其中,V表示删除元素的值类型,而key表示要删除的元素对应的键。

如果指定键所对应的元素存在,则该元素将被删除并返回;否则返回null。

注:如果SortedMap对象是不可修改或者该键对应的元素不存在,将会抛出UnsupportedOperationException或者NullPointerException异常。

SortedMap remove()示例

假设有一个SortedMap,其中存储了一些员工的信息,键为员工的ID,值为员工的年龄和薪资。下面是使用remove()方法来删除员工信息的实现示例:

import java.util.SortedMap;
import java.util.TreeMap;

public class SortedMapDemo {
    public static void main(String[] args) {
        SortedMap<Integer, Employee> employees = new TreeMap<>();
        employees.put(1001, new Employee("Tom", 28, 5000));
        employees.put(1002, new Employee("Jerry", 35, 8000));
        employees.put(1003, new Employee("John", 30, 6000));
        employees.put(1004, new Employee("Mary", 25, 4000));

        System.out.println("Before remove:");
        for (Integer id : employees.keySet()) {
            System.out.println(employees.get(id));
        }

        // 删除ID为1003的员工
        employees.remove(1003);

        System.out.println("After remove:");
        for (Integer id : employees.keySet()) {
            System.out.println(employees.get(id));
        }
    }
}

class Employee {
    private String name;
    private int age;
    private double salary;

    public Employee(String name, int age, double salary) {
        this.name = name;
        this.age = age;
        this.salary = salary;
    }

    public String toString() {
        return "name: " + name + ", age: " + age + ", salary: " + salary;
    }
}

该示例首先创建了一个SortedMap对象employees,接着向其中存储了四个员工的信息。然后,使用remove()方法删除了ID为1003的员工信息。最后,展示了删除前后员工信息的变化情况。

运行示例程序,可以看到如下结果:

Before remove:
name: Tom, age: 28, salary: 5000.0
name: Jerry, age: 35, salary: 8000.0
name: John, age: 30, salary: 6000.0
name: Mary, age: 25, salary: 4000.0
After remove:
name: Tom, age: 28, salary: 5000.0
name: Jerry, age: 35, salary: 8000.0
name: Mary, age: 25, salary: 4000.0

从结果可以看出,ID为1003的员工信息被成功删除了。