我想创建一个可以迭代和排序的变量,其中包含一个“移动”和一个 double 值。我认为我最好的选择是带有整数的 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 map ,非常感谢您的帮助!
最佳答案
接口(interface)与实现
你的问题是SortedMap
是一个 interface - 你不能实例化它。您需要选择适合您需要的实现。
例如,您可以使用 TreeMap
.
SortedMap<Integer, SimpleEntry<Move, Double>> moveMap = new TreeMap<>();
对于警告,将您的行更改为
moveMap.put(i, new SimpleEntry<>(move, turnValue));
阅读 JavaDoc 时寻找“接口(interface)”、“类”和“实现”等词.
关于java - 将 SimpleEntry 添加到 SortedMap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53584047/