Оператор преобразования TreeMap и SortedMap - PullRequest
0 голосов
/ 13 ноября 2018

Что не так с этим утверждением?

private final HashMap<String, SortedMap<Long, Long>> abc;
abc = new HashMap<String, TreeMap<Long, Long>>;

Это показывает ошибку, что SortedMap не может быть преобразован в TreeMap, как это? Как я могу сделать это возможным?

Ответы [ 2 ]

0 голосов
/ 13 ноября 2018

Вы не инициализировали HashMap. Не забудьте использовать конструктор, когда создаете новый объект.

import java.util.*;
public class MyClass {
    public static void main(String args[]) {
        HashMap<String,SortedMap<Long,Long>> abc;
        abc = new HashMap<>();
    }
}
0 голосов
/ 13 ноября 2018

Если вы действительно хотите иметь возможность назначить его таким образом, тогда вы можете использовать подстановочный знак с ограничением ? extends SortedMap. например:

private final Map<String, ? extends SortedMap<Long, Long>> abc;
...
abc = new HashMap<String, TreeMap<Long, Long>>();

Тем не менее, вам не нужно указывать тип вложенной карты при создании нового внешнего экземпляра hashmap ... просто сохраните его как SortedMap. Позже, когда вы вставляете значение, это могут быть новые TreeMap экземпляры, потому что они реализуют SortedMap. например,

private final Map<String, SortedMap<Long, Long>> abc;
...
abc = new HashMap<String, SortedMap<Long, Long>>();
abc.put("Test", new TreeMap<Long, Long>());

После сокращения этого кода для вывода типа строки назначения могут выглядеть следующим образом:

abc = new HashMap<>();
abc.put("Test", new TreeMap<>());
...