是否可以使用双引号字符作为hashmap键的一部分?

时间:2011-01-14 07:09:26

标签: java key hashmap

我将使用像“hello”world这样的字符串作为hashmap键。 关键实际上来自用户输入,这就是为什么可以将这样的东西作为密钥。 好吗?

4 个答案:

答案 0 :(得分:5)

绝对。就Java源代码而言,双引号字符只是“特殊”。你甚至可以在Java本身内逃避它:

HashMap<String, String> map = new HashMap<String, String>();
map.put("foo\"bar", "value");
System.out.println(map.get("foo\"bar")); // Will print value

这里的密钥本身就是foo“bar - 反斜杠只是用于在字符串文字中转义。

答案 1 :(得分:3)

是的,当然。即使是0字符(通常在C中用作字符串结尾符号)也是Java中的字符,所以实际上没有约束。

答案 2 :(得分:2)

不确定。如果密钥是String类型,则允许所有字符。没有限制。

提醒一下:假设,用户输入:

 Jack"o"Lantern

然后Java文字是

 "Jack\"o\"Lantern"

答案 3 :(得分:1)

正如其他人告诉你的那样,java中的字符串允许包含所有unicode字符,因此对于hashmap中的键,你没问题。

但是在使用包含未经过滤的用户输入的字符串创建SQL查询,http请求或类似信息时要小心 - 您的软件可能会对SQL注入或跨站点脚本攻击开放。在这种情况下,使用预处理语句等机制而不是字符串连接将有所帮助。