TreeMap和SortedMap转换语句

时间:2018-11-13 05:44:06

标签: java debugging hashmap treemap sortedmap

这句话怎么了?

$hello = "world";

$myFunc = function($str) use($hello) {
    return compact($str);
};
print_r($myFunc('hello'));

它显示出无法像这样将private final HashMap<String, SortedMap<Long, Long>> abc; abc = new HashMap<String, TreeMap<Long, Long>>; 转换为SortedMap的错误?我如何做到这一点?

2 个答案:

答案 0 :(得分: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<>());

答案 1 :(得分:-1)

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

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