【发布时间】:2015-10-13 00:42:03
【问题描述】:
我想做的是创建一个HashMap,看起来像这样。
我假设通配符 * 可以用作键,所以如果搜索除 a、b 和 c(假设为 x)以外的任何字符,此 HashMap 将返回10。
for (int j = 0; j <= 2; j++) {
table.put(pattern[j], (pattern.length - 1 - j));
//This part is actually not the same as the original code.
//The keys are a,b,c, and the values are 1,2,3 respectively
}
table.put('*', 10);
但是,当我在此映射中搜索键 x 时,会返回 null,因此很明显 * 不能直接用作通配符键。我关注了this page,但显然这不适用于 HashMap。
如果您能提供解决此问题的任何见解,我将不胜感激。
【问题讨论】:
-
子类
HashMap让它做你想做的事,即。给定一个未显式映射的值,返回10。 -
*字符在 HashMaps 中并不特殊。 HashMaps only 对它们的键的 hashCode 和相等性进行操作——没有其他魔法(除了null,我猜,它在特殊情况下只等于它自己)。没有理由让*充当通配符,而不是让w或☃充当通配符。 -
@SotiriosDelimanolis 但这会破坏
Map的合同。 -
@PaulBoddington Nah,请澄清这个新类的规范中的行为。