文字列に一意の文字しか含まれていないかどうかを確認するメソッドを作成しました。明らかな一意でない文字列を送信すると、代わりに"11"
返されます。これは、文字が既に HashMap にあるにもかかわらずinが返されるために発生します。true
false
get(c)
if (tab.get(c) == null)
null
'1'
期待される動作を得るにはどうすればよいですか?
/* 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?! */
}