我想使用不区分大小写的字符串作为HashMap键,原因如下.
<key, value>从HashMap中找到忽略我从流量中收到的情况.我遵循了这种方法
CaseInsensitiveString.java
public final class CaseInsensitiveString {
private String s;
public CaseInsensitiveString(String s) {
if (s == null)
throw new NullPointerException();
this.s = s;
}
public boolean equals(Object o) {
return o instanceof CaseInsensitiveString &&
((CaseInsensitiveString)o).s.equalsIgnoreCase(s);
}
private volatile int hashCode = 0;
public int hashCode() {
if (hashCode == 0)
hashCode = s.toUpperCase().hashCode();
return hashCode;
}
public String toString() {
return s;
}
}
Run Code Online (Sandbox Code Playgroud)
LookupCode.java
node = nodeMap.get(new CaseInsensitiveString(stringFromEvent.toString()));
Run Code Online (Sandbox Code Playgroud)
因此,我正在为每个事件创建一个CaseInsensitiveString的新对象.因此,它可能会影响性能.
有没有其他方法可以解决这个问题?
是否有一个很好的方法来Map<String, ?>获得并放弃忽略案例?