输入重复键时保持原始键/值的Hashmap

use*_*977 3 java hashmap duplicates key-value

当输入重复键时,a 是否可以Hashmap保留其原始key/value对?

例如,假设我有这样的事情:

Map<String, String> map = new HashMap<String, String>();

map.put("username","password1");
map.put("username","password2");
Run Code Online (Sandbox Code Playgroud)

我希望key/value保留原始对 - 用户名,密码1,而不是用户名,密码2覆盖.

这可能吗?如果没有,我如何消除重复的条目被放入地图?

K E*_*son 5

如上所述,putIfAbsent如果您使用Java 8,则可以使用.

如果您使用的是较旧的Java版本,则可以使用ConcurrentHashMap带有putIfAbsent方法的替代版本.

当然,您获得了线程安全的额外开销,但如果您不编写性能极其敏感的应用程序,则不应该担心.