Java:HashMap:get:指定默认值

uta*_*ngo 3 python java dictionary hashtable hashmap

在Python中,我可以执行以下操作:

d = { 'a': True, 'b': False }
print d.get('x', True)
Run Code Online (Sandbox Code Playgroud)

它会打印出来

True
Run Code Online (Sandbox Code Playgroud)

在Java中,该HashMap.get方法没有用于指定默认值的第二个参数.实现这一目标的正确,简洁和可读的方法是什么?以下表达式对我来说似乎太多了:

map.containsKey("x") ? map.get("x") : true
Run Code Online (Sandbox Code Playgroud)

sou*_*eck 6

OP编辑了他的问题,但我会留下答案以防万一.

你应该用

map.containsKey("x") 
Run Code Online (Sandbox Code Playgroud)

代替

map.get("x") != null
Run Code Online (Sandbox Code Playgroud)

测试map是否有key的映射.

映射可以在映射中包含null作为有效值.

python也是如此.仅测试dict [key] == None是否足以知道某个键是否映射到某个东西是不够的.

快速测试:

d = {'a': None}

# returns True
d['a'] == None

# raises KeyError
d['b'] 

# returns 'Whatever'
d.get('b', 'Whatever')
Run Code Online (Sandbox Code Playgroud)

所以java相当于python dict.get()

map.containsKey("x") ? map.get("x") : default_value
Run Code Online (Sandbox Code Playgroud)

正如OP所说