📅  最后修改于: 2023-12-03 15:01:56.896000             🧑  作者: Mango
在Java中,SortedMap
接口是Map
的子接口,它继承了Map
接口中的方法,并提供了按照键的自然顺序或自定义比较器顺序来维护键值关系的有序映射。
SortedMap
接口提供了一个comparator()
方法,用于返回用于排序SortedMap
键的比较器。如果没有提供比较器,则使用键的自然顺序。
下面是SortedMap
接口定义的比较器方法:
Comparator<? super K> comparator()
在接下来的示例中,我们将演示如何使用comparator()
方法来按照自定义的顺序将键排序。
import java.util.Comparator;
import java.util.SortedMap;
import java.util.TreeMap;
public class SortedMapExample {
public static void main(String[] args) {
// 创建一个自定义比较器
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String o1, String o2) {
return o2.compareTo(o1); // 逆序排列
}
};
// 创建一个有序映射
SortedMap<String, String> sortedMap = new TreeMap<>(comparator);
// 添加元素
sortedMap.put("three", "3");
sortedMap.put("one", "1");
sortedMap.put("four", "4");
sortedMap.put("two", "2");
// 打印元素
for (String key : sortedMap.keySet()) {
System.out.println(key + " -> " + sortedMap.get(key));
}
// 打印比较器
System.out.println("Comparator: " + sortedMap.comparator());
}
}
该程序创建了一个自定义比较器来按照逆序排列字符串键。然后使用该比较器创建了一个SortedMap
实例,并向其添加了元素。最后,程序输出了按照逆序排列的键值对及其比较器对象。
two -> 2
three -> 3
one -> 1
four -> 4
Comparator: java.util.Comparator$1@2c7b84de
可以看到,输出结果按照逆序排列的键值对,并且使用创建的自定义比较器。