我怎样才能有一个按值排序的treeMap在更改元素时保持排序?

时间:2016-12-26 20:50:56

标签: java sorting treemap

我有一个字符串键和int值的映射,我对它们进行排序,并在更改值时对它们进行排序。 我尝试使用树形图作为排序对和未分类巴黎的法线贴图,这样我就可以在比较器中使用它,但是在一个值通过另一个后,我得到一个空的预期,这就是防御:

public static TreeMap<String, Long> countryData;
public static ValueComparator bvc;

public static void setCountryData(HashMap<String, Long> map){
    bvc = new ValueComparator(map);
    countryData = new TreeMap<String, Long>(bvc);
    countryData.putAll(map);
    System.out.println(Arrays.toString(countyNames));
    System.out.println(countryData.values());


}

public static class ValueComparator implements Comparator<String> {
    Map<String, Long> base;

    public ValueComparator(Map<String, Long> base) {
        this.base = base;
    }


    public int compare(String a, String b) {
        if(base.get(a).equals(base.get(b))){
            return 0;
        }
        if (base.get(a) > base.get(b)) {
            return -1;
        } else {
            return 1;
        }
    }
}

这是我更改值的方式:

General.bvc.base.put(country, newValue);
General.countryData.put(country, newValue);

一个值传递给另一个后我试图访问它,我得到一个null,我怎么能这样做?

1 个答案:

答案 0 :(得分:2)

  

我怎样才能拥有按值排序的TreeMap ..

你做不到。它们按键排序。

  

...

不相关。