我编写了一个方法来检查字符串是否只包含唯一字符。我给它发送了一个显然非唯一的字符串
我该如何才能获得预期的结果?
"11"
,但它返回了true
而不是false
。这是因为在if(tab.get(c) == null)
中的get(c)
返回了null
,即使字符'1'
已经存在于HashMap中。我该如何才能获得预期的结果?
/* Check if a string contains only unique characters */
public static boolean isUniqueChars(String s) {
HashMap<Boolean, Character> tab = new HashMap<Boolean, Character>();
Character c;
for (int i = 0; i < s.length(); ++i) {
c = new Character(s.charAt(i));
if (tab.get(c) == null)
tab.put(Boolean.TRUE, c);
else
return false;
}
return true;
}
public static void main(String[] args) {
String s = "11";
System.out.println(isUniqueChars(s)); /* prints true! why?! */
}
HashMap
,你只需要一个HashSet
。 - MarceloSet<Character>
而不是Map<Character, Boolean>
。 - Maciej PiechotkaMap
时,请使用myMap.containsKey(keyObject)
来确定该键是否已经存在于映射中。 - musical_coder