有没有办法捕获Java KeyNotFoundException
中的HashMap
并在catch块中将关键字添加到地图中?
例如,我想在HashMap
中为键添加值。如果该密钥不存在,则将抛出KeyNotFoundException
。
一种替代方法是每次检查密钥是否存在。如果没有,请添加密钥,然后添加值。如果存在,则直接将值添加到密钥。但是,if条件会有很多开销。因此,当抛出此异常时,我可以在catch子句中添加键和值然后继续正确吗?
答案 0 :(得分:1)
如果密钥不存在,map.put(key,value)
只会添加其值。如果密钥存在,map.put(key,value)
将覆盖旧值。无论哪种方式,都不会抛出任何异常。你为什么要抛出异常?
如果要在密钥已存在时更改当前值,最好检查密钥是否存在,如果不存在则添加密钥。否则,您仍然需要检查密钥是否存在(使用!map.containsKey(key)
或map.get(key)==null
)以便知道何时抛出异常,并且您仍然必须编写添加密钥的逻辑在catch块中,所以你不会保存任何东西,你的代码只会变得不那么可读。
答案 1 :(得分:1)
你100%误解了这一切。
有没有办法捕获Java
中的KeyNotFoundException
HashMap
不,因为Java中没有这样的例外。
并在catch块中将键添加到地图中?
不,因为你甚至无法编译这样的代码,
例如,我想在hashmap中为键添加一个值。如果该密钥不存在,则会抛出
KeyNotFoundException
。
不,它没赢。
另一种方法是每次检查密钥是否存在。
Map.containsKey()
。
如果没有,请添加密钥,然后添加值。
如果存在,直接将值添加到密钥。但是,if条件会有很多开销。
没有胜利。关键操作HashMap
O(1)。
因此,抛出此异常时,
'此例外'没有被抛出。它甚至不存在。
我可以在catch子句中添加键和值然后继续正确吗?
不,因为你无法编译代码。
你的问题建立在错误的前提下。