重写一个treemap 的比较器
时间: 2024-05-14 22:18:26 浏览: 12
TreeMap是一种基于红黑树实现的有序映射,它默认使用键的自然顺序(按照Comparable接口的compareTo方法)进行排序。如果我们想要使用自定义的比较器来排序,需要在创建TreeMap时传入一个Comparator对象。
下面是一个重写TreeMap比较器的示例代码:
```java
import java.util.Comparator;
import java.util.Map;
import java.util.TreeMap;
public class MyComparator implements Comparator<String> {
@Override
public int compare(String o1, String o2) {
// 自定义比较规则:按照字符串长度降序排序
return Integer.compare(o2.length(), o1.length());
}
}
public class TreeMapTest {
public static void main(String[] args) {
Map<String, Integer> map = new TreeMap<>(new MyComparator());
map.put("apple", 10);
map.put("banana", 5);
map.put("orange", 8);
System.out.println(map); // 输出 {banana=5, apple=10, orange=8}
}
}
```
在上面的示例中,我们实现了一个自定义的比较器MyComparator,它按照字符串长度降序排序。然后在创建TreeMap时,将MyComparator对象传入构造函数中,即可使用自定义的比较器进行排序。最后输出的结果是 {banana=5, apple=10, orange=8},符合我们的预期。