Добавление SimpleEntry в SortedMap - PullRequest
0 голосов
/ 02 декабря 2018

Я хотел создать переменную, которую я могу перебирать и сортировать позже, содержащую «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++;
    }
}

Моя проблема заключается в том, что я получаю сообщение об ошибке в строке 3 при инициализации SortedMap (Не удается создать экземпляр типа SortedMap>).Я также получаю 2 предупреждения при добавлении нового SimpleEntry: 1. Безопасность типов: для выражения типа AbstractMap.SimpleEntry требуется непроверенное преобразование, чтобы соответствовать AbstractMap.SimpleEntry 2. Описание Путь к ресурсу Расположение Тип безопасности: для выражения типа AbstractMap.SimpleEntry необходимонепроверенное преобразование в соответствии с AbstractMap.SimpleEntry

Я совершенно новичок в Картах и ​​буду очень признателен за вашу помощь!

1 Ответ

0 голосов
/ 02 декабря 2018

Интерфейс против реализации

Ваша проблема в том, что SortedMap - это интерфейс - вы не можете создать его экземпляр.Вам нужно выбрать реализацию, которая соответствует вашим потребностям.

Например, вы можете использовать TreeMap.

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

Для предупреждения измените строку

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

При чтении JavaDoc .

enter image description here* ищите слова «interface», «class» и «реализовать».1025 *

...