【问题标题】:TreeMap and SortedMap conversion statementTreeMap 和 SortedMap 转换语句
【发布时间】:2018-11-13 05:44:06
【问题描述】:

这句话有什么问题?

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

这样显示SortedMap无法转换为TreeMap的错误?我怎样才能做到这一点?

【问题讨论】:

  • 只使用类型推断,即让编译器完成它的工作。简单使用:abc = new HashMap&lt;&gt;().

标签: java debugging hashmap treemap sortedmap


【解决方案1】:

如果您真的希望能够以这种方式分配它,那么您可以使用带有绑定? 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<>());

【讨论】:

    【解决方案2】:

    您尚未初始化您的HashMap。实例化新对象时记得使用构造函数。

    import java.util.*;
    public class MyClass {
        public static void main(String args[]) {
            HashMap<String,SortedMap<Long,Long>> abc;
            abc = new HashMap<>();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-01-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-29
      相关资源
      最近更新 更多