将 SimpleEntry 添加到 SortedMap

Adding a SimpleEntry to a SortedMap

我想创建一个我可以迭代并稍后排序的变量,其中包含一个 "Move" 和一个双精度值。我认为我最好的选择是带有整数的 SortedMap(我读到我需要某种比较器)和一个包含我的实际数据的条目。我有这个方法

    public SortedMap<Integer, Entry<Move, Double>> listFishMoves(Field fishField) {
    ArrayList<Move> fishMoves = getFishMoves(fishField);
    SortedMap<Integer, SimpleEntry<Move, Double>> moveMap = new SortedMap<Integer, SimpleEntry<Move, Double>>();
    int i = 0;
    for (Move move : fishMoves) {
        double turnValue = getMoveValue(move);
        moveMap.put(i, new SimpleEntry(move, turnValue));
        i++;
    }
}

我的问题是我在初始化 SortedMap 时在第 3 行遇到错误(无法实例化类型 SortedMap>)。 添加新的 SimpleEntry 时,我还会收到 2 条警告: 1、类型安全:AbstractMap.SimpleEntry类型的表达式需要unchecked转换才能符合AbstractMap.SimpleEntry 2.描述资源路径位置类型 类型安全:类型 AbstractMap.SimpleEntry 的表达式需要未经检查的转换以符合 AbstractMap.SimpleEntry

我对 Google 地图完全陌生,非常感谢您的帮助!

接口与实现

您的问题是 SortedMap is an interface - 您无法实例化它。您需要 select 一个适合您需要的实现。

例如,您可以使用 TreeMap.

SortedMap<Integer, SimpleEntry<Move, Double>> moveMap = new TreeMap<>();

对于警告,将您的行更改为

moveMap.put(i, new SimpleEntry<>(move, turnValue));

在阅读 JavaDoc.

时寻找“接口”、“class”和“实现”等词