我有一个TreeMap,键是一个字符串,值是一对,类型(整数,字符串),我需要我的treeMap按照对的键排序。我没有和Pairs一起工作,我很好奇这是最好的方法。
我很难为这对创建一个TreeMap比较器。我正在添加功能时将该对添加到Map中。我是否需要为Pair本身创建一个子类并在子类中使用比较器,或者我可以通过比较器访问treeMap类中的Pair。这就是我想要添加一个比较器。
private final TreeMap<String, Pair<Integer, String>> cacheFiles;
public Cache(int size) {
this.cacheFiles = new TreeMap<String, Pair<Integer, String>>();
this.size = size;
this.currSize =0;
}
public void add(String fname, int cost, String contents) {
if (!cacheFiles.containsKey(fname)) {
updateSize(cost);
cacheFiles.put(fname, new Pair<Integer, String>(cost, contents));
}
我需要按照&#34; cost&#34;因此,当我删除firstEntry或lastEntry时,它将删除最大的成本或最小的成本,因为我无法跟踪可能必须在给定点删除的每个Map条目的键。
这是我一直在尝试的...但是每当我尝试使用Pair的比较器时编辑器都不喜欢它。
感谢您的帮助!
public Cache(int size) {
this.cacheFiles = new TreeMap<String, Pair<Integer, String>>(new Comparator<Pair>() {
public int compare(Pair<Integer, String> p1, Pair<Integer, String> p2) {
return o1.getKey().compareTo(o2.getKey());
}
});
this.size = size;
this.currSize =0;
}