java - 如何自定义 TreeMap 以按降序对键进行排序?

标签 java sorting treemap

我有一段代码,我试图用它来按降序对 TreeMap 中的键进行排序,因为当我只使用 TreeMap 时,它会根据键,按升序排列。我收到的错误是:

No Suitable Constructor found for TreeMap.

这里出了什么问题?

import java.util.TreeMap;
import java.util.Map;
import java.util.Comparator;
import java.util.Map.Entry;
import java.util.SortedMap;

public class ChangeMachine {


    public TreeMap<Double, Integer> dispenseChange(Double changeAmount, TreeMap<Double, Integer> coinsMap) {
        TreeMap<Double, Integer> coinDispenserMap = new TreeMap<>();
        for (Map.Entry<Double, Integer> coin : coinsMap.entrySet()) {
            if (!(changeAmount > coin.getKey())) {
                coinDispenserMap.put(coin.getKey(), 0);
                continue;
            }
            int noOfCoins = (int) (changeAmount / coin.getKey());
            coinDispenserMap.put(coin.getKey(), noOfCoins);
            Double remainder = changeAmount % coin.getKey();
            changeAmount = remainder;
            if (changeAmount == 0.0) {
                break;
            }
        }
        return coinDispenserMap;

    }


    public static void main(String[] args) {
        ChangeMachine ref = new ChangeMachine();
        TreeMap<Double, Integer> coinsMap = new TreeMap<Double, Integer>(new Comparator<Entry<Double, Integer>>() {
            public int compare(Entry<Double, Integer> coin1, Entry<Double, Integer> coin2) {
                return (coin2.getKey().compareTo(coin1.getKey()));
            }
        });
        coinsMap.put(0.25, 10);
        coinsMap.put(0.01, 10);
        coinsMap.put(0.05, 10);
        coinsMap.put(0.10, 10);

        TreeMap<Double, Integer> coinDispenserMap = ref.dispenseChange(0.86, coinsMap);

        for (Map.Entry<Double, Integer> coin : coinDispenserMap.entrySet()) {
            System.out.println(coin.getKey() + " : " + coin.getValue());
        }
    }
}

最佳答案

试试这个:

Comparator<Double> comparator = Double::compare;
Comparator<Double> reverseComparator = comparator.reversed();
Map<Double,Integer> reversedMap = new TreeMap(reverseComparator);

关于java - 如何自定义 TreeMap 以按降序对键进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36512224/

相关文章:

mysql - 使用不同的表列进行sphinx搜索权重排序

c++排序算法难度与数组长度

java - 使用 IgnoreCase 按键对 Map<String, Object> 进行排序?

java - java 上的 json(包含很少的对象)到 TreeMap

java - 通用单例工厂

java - 如何正确调用该方法?

java - 从字节数组 java 创建 BufferedImage

python - 按多个字符将列表拆分为 block [Python]

java - 如何使用 Java 的 T3 协议(protocol)(weblogic)部署 War 文件?

R:Plotly:树形图:仅对最低标签着色