我试图理解为什么当用作Hashmap密钥时,将String和Stringbuilder /
StringBuffer区别对待。让我通过以下插图使我的困惑更加清楚:
示例1,使用String:
String s1 = new String("abc");
String s2 = new String("abc");
HashMap hm = new HashMap();
hm.put(s1, 1);
hm.put(s2, 2);
System.out.println(hm.size());
上面的代码片段打印为“ 1”。
Example#2,使用StringBuilder(或StringBuffer):
StringBuilder sb1 = new StringBuilder("abc");
StringBuilder sb2 = new StringBuilder("abc");
HashMap hm = new HashMap();
hm.put(sb1, 1);
hm.put(sb2, 2);
System.out.println(hm.size());
上面的代码片段打印为“ 2”。
任何人都可以解释一下行为差异的原因。
问题内容: 使用此代码: 当我使用StringBuilder运行代码时,出现错误消息 尝试了StringBuffer,它可以工作。StringBuffer对象的内容被编译为“ Java和Eclipse ..”。 } 问题答案: 确实 有一个接受a 作为参数 的构造函数,并且 确实 有一个方法(由于实现了它必须实现)。 结论:这是您的IDE中的一个不幸,它没有导入正确的。您使用的另一个库具有不幸的“
以下是相关的更新代码位。正如用户carmickr所建议的,我使用DefaultListModel来处理地址簿HashMap中的数据。 然后在UserInterface构造函数内部:
问题内容: 当我使用定义变量时,该字符串不会添加到字符串池中,对吗? 现在,当我定义另一个而不是时,我将其定义为突然。(或我的大学老师说)。这是为什么?是什么使这个字符串突然变成字符串池字符串? 问题答案: 当我用new定义一个StringBuffer变量时,该字符串没有添加到字符串池中,对吗? 创建a 根本不会创建a 。 现在,当我定义另一个StringBuffer而不是new时,我突然将其定义
问题内容: 我正在使用Java,并且有一个JSON字符串: 然后我的Java地图: 我想将来自JSONObject的所有数据存储在该HashMap中。 谁能为此提供代码?我想使用图书馆。 问题答案: 我几天前通过递归编写了这段代码。
我使用的是Java,我有一个字符串是JSON: 我希望将JSONObject中的所有数据存储在HashMap中。 有人能为此提供代码吗?我想使用库。
问题内容: 我有一个Java属性文件,并且有一个as 。因此,在加载如下所示的属性文件后,我使用方法检索的:: 然后 我需要从上面的字符串创建一个HashMap。应该是HashMap中,并应第秒。 如果是硬连线的,则如下所示: 问题答案: 将该方法与分隔符一起使用,以获取对列表。迭代对,然后再次使用分隔符以获取每个对的键和值。