嗨,我有以下代码
TreeMap mp = new TreeMap<String,TreeMap<String,Integer>();
mp.put(line,(new TreeMap<String,Integer>()));
现在,如果我想将数据插入到由“mp”创建的新的空树<string,integer>,我该怎么做?
嗨,我有以下代码
TreeMap mp = new TreeMap<String,TreeMap<String,Integer>();
mp.put(line,(new TreeMap<String,Integer>()));
现在,如果我想将数据插入到由“mp”创建的新的空树<string,integer>,我该怎么做?
3条答案
按热度按时间rdlzhqv91#
您发布的代码段有多个问题:
在第一行中,您没有指定泛型类型,因此
mp
是rawtype-因此调用get
它返回类型的东西Object
-使用这将需要铸造,不建议。有效版本包括:或
这两个版本都允许您访问嵌套Map,而无需强制转换:
但是,正如其他人已经提到的,在没有值的情况下将值放在Map中,而在其他情况下使用现有值,这正是方法所要做的
computeIfAbsent
用于-您可以编写的,例如:输出:
j9per5c42#
有很多方法可以做到这一点。
首先,您可以简单地保留一个参考:
其次,您可以从Map中读取值—显然这不是很有效,但出于完整性考虑,我会将其包括在内:
最优雅的解决方案是
computeIfAbsent
:xn1cxnb43#
检索它使用
TreeMap#get(java.lang.Object)
并使用检索到的TreeMap
例如TreeMap#put(K, V)
.例子:
为了完整性:如果您使用Java8或更高版本,为了使代码更清晰,您可以使用
computeIfAbsent
:.