Java TreeMap <string,pair <integer,=“”string =“”> Pair上的比较器<integer,string =“”>

时间:2018-04-27 21:39:55

标签: java comparator treemap keyvaluepair

我有一个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;
}

0 个答案:

没有答案