java treemap 如何使用comparator
时间: 2023-07-20 13:15:53 浏览: 114
除了在key所对应的类中实现Comparable接口并重写compareTo方法外,还可以使用Comparator接口来对key进行排序。具体实现方法是在创建TreeMap时,传入一个实现了Comparator接口的对象,该对象重写compare方法来实现自定义的比较方法。例如:
```
public class MyClass {
private String myKey;
private int myValue;
public MyClass(String key, int value) {
this.myKey = key;
this.myValue = value;
}
// getters and setters
}
// 自定义比较器,根据myKey的长度进行排序
class MyComparator implements Comparator<String> {
@Override
public int compare(String str1, String str2) {
return str1.length() - str2.length();
}
}
// 使用自定义比较器创建TreeMap
TreeMap<String, MyClass> myTreeMap = new TreeMap<>(new MyComparator());
// 插入数据
myTreeMap.put("abc", new MyClass("abc", 1));
myTreeMap.put("defg", new MyClass("defg", 2));
myTreeMap.put("hijkl", new MyClass("hijkl", 3));
// 遍历输出
for (Map.Entry<String, MyClass> entry : myTreeMap.entrySet()) {
System.out.println(entry.getKey() + ":" + entry.getValue().getMyValue());
}
```
在上面的示例中,我们创建了一个实现了Comparator接口的MyComparator类,并在创建TreeMap时将其传入。在MyComparator类中,我们重写了compare方法,根据myKey的长度进行排序。然后我们插入了三个MyClass对象,根据MyComparator的定义,它们会按照myKey的长度从小到大进行排序。最后我们遍历输出了TreeMap中的数据。
阅读全文