【问题标题】:Java - Map allowing null values/keys and not thread safeJava - Map 允许空值/键而不是线程安全的
【发布时间】:2013-09-23 16:59:07
【问题描述】:

我正在寻找具有以下要求的 Map 接口的实现:

  • 不是线程安全的
  • 不允许空值和空键
  • 在 JDK 中

你知道一个吗?

Java 6

【问题讨论】:

  • 您可以在HashMap 上使用不允许null 键或值的包装器。
  • 虽然取决于您想要的彻底程度,但您需要确保它也不允许用户通过地图视图设置nulls(即map.entrySet().next().setValue(null) )
  • @LuiggiMendoza 怎么样?能详细回答一下吗?

标签: java map thread-safety


【解决方案1】:

Collections.checkedMap怎么样:

Map<String,String> hashMap = new HashMap<String,String>();
hashMap.put(null, null); // allowed

Map<String,String> map = Collections.checkedMap(hashMap, String.class, String.class);
map.put(null, null); // results in NullPointerException

现在map 是我希望满足您所有 3 个要求的地图。

【讨论】:

  • checkMap 对map.entrySet().next().setValue(null) 进行了防弹,如@yshavit 所述?但是,我不知道checkedMap...
  • @Alex 看起来像。只需检查 javadoc。
  • 只是一个警告,这似乎在 Java 7 中发生了变化(或者可能是特定于实现的!)ideone.com/PrF1Ax
  • @Alex:虽然它满足了你的所有 3 个要求,但你不接受这个答案,我可以知道为什么吗?
  • 我不接受它,因为您已针对 Java 7 提出警告。请参阅我在要求中的更新。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 2021-08-08
  • 2013-02-10
  • 2010-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多