📅  最后修改于: 2023-12-03 15:01:56.872000             🧑  作者: Mango
在Java中,SortedMap是Map接口的一个子接口,他拥有基本的add、remove、get等方法,但SortedMap与普通的Map最大的区别在于它保证了元素顺序的有序性,同时也提供了部分额外的方法。
SortedMap接口有两种实现方式:TreeMap和ConcurrentSkipListMap(在Java8中新增)。其中,TreeMap使用的是红黑树数据结构,而ConcurrentSkipListMap使用的是跳表数据结构。
SortedMap中的remove()方法用于删除指定键所对应的元素。该方法的声明如下:
V remove(Object key)
其中,V表示删除元素的值类型,而key表示要删除的元素对应的键。
如果指定键所对应的元素存在,则该元素将被删除并返回;否则返回null。
注:如果SortedMap对象是不可修改或者该键对应的元素不存在,将会抛出UnsupportedOperationException或者NullPointerException异常。
假设有一个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的员工信息被成功删除了。