java里面有关比较器的一个小问题。

这个不知道是什么问题。求解。
自己定义了一个比较器,是TreeMap的。自己想要先通过值进行比较,如果值一样,就通过键进行比较。

img

是这个意思不 ??


package org.jshand.itextpdf;

import java.util.Comparator;
import java.util.TreeMap;

/**
 * 项目:commons
 * 创建时间:  2022-02-14   16:12
 * 作者 :金山
 * 描述 :
 */
public class TreeMapCompareDemo {

    /**
     * 全局map,便于比较器中使用
     */
    public static TreeMap<String,Integer> tm;

    public static void main(String[] args) {
        Comparator comparator;
        tm = new TreeMap(new TreeMapCompare());
        tm.put("lqx",12);
        tm.put("fqy",16);
        tm.put("znk",10);
        tm.put("jgdabc",20);
    }



    static class TreeMapCompare implements   Comparator<String>{

        @Override
        public int compare(String key1, String key2) {
            Integer v1 = tm.get(key1);
            Integer v2 = tm.get(key2);
            return v1.compareTo(v2 )==0?
                    key1.compareTo(key2)    //如果value相等则比较key
                          :
                    v1.compareTo(v2 ); //如果value不等则按照value比较


        }
    }

}


img

img

img

值和key都不是一个,有很多个,你这个是啥逻辑呀?

img


逻辑完全错乱的


public class TreeSetDemo1 {
    public static void main(String args[]) {
        TreeSet<Student> ts = new TreeSet<>(new Comparator<Student>() {
            @Override
            public int compare(Student s1, Student s2) {
                int num = s1.getAge() - s2.getAge();
                int num2 = num == 0 ? s1.getName().compareTo(s2.getName()) : num;
                return num2;
            }
————————————————

那个是单列的,这个是双列的。上午看的迷糊住了。后面那个