我目前正在实现一个TreeMap来存储键值对,其中键是一个正则字符串,值是一堆对象。据我所知(这是我第一次使用Map,所以我很了解(,TreeMap类使用键的自然顺序来对自己进行排序,但我希望它按词法进行排序。根据我的理解,它的比较器方法可以被重写以实现这一点。我已经知道如何将其编纂成词典,我的问题在于我不知道如何实际覆盖该方法。我是否将被覆盖的部分放在我正在使用TreeMap的类中?我必须制作一个名为树映射的单独类并在那里编写新方法吗?重写比较方法的特殊语法(如果有的话(是什么?如果这个问题看起来很基本,我很抱歉,但我对此很陌生,在网上我很难找到一个我完全理解的解释。提前感谢您的帮助和耐心!
举个例子:
class SortAscendingComparator implements Comparator<String> {
@Override
public int compare(String s1, String s2) {
return s1.compareTo(s2);
}
}
public class Demo {
public static void main(String[] args) {
SortedMap<String, String> map = new TreeMap<>(new SortAscendingComparator());
map.put("c", "c");
map.put("a", "a");
map.put("b", "b");
// Displays: {a=a, b=b, c=c}
System.out.println(map);
}
}
TreeMap
类具有接受自定义Comparator
对象的特定构造函数。您可以将您的逻辑放入传递比较器中。
实际上,您可以将自己的Comparator实例传递给TreeMap的一个构造函数。使用lambda表达式,您甚至可以将其简化为:
TreeMap<String, String> t = new TreeMap<>(String::compareTo);