问题内容: 我了解这是基于实现的,但是在您需要唯一的元素集时使用。那么,为什么在下一个代码中将相同的对象放入地图并进行设置时,两个集合的大小都等于1?地图大小不应该为2吗?因为如果两个集合的大小相等,那么使用这两个集合不会有任何区别。 输出为1和1。 问题答案: 该地图拥有唯一键。当您使用映射中存在的键进行调用时,该键下的对象将被新对象替换。因此大小为1。 两者之间的区别应该很明显: 在您存储键值
问题内容: Java 使用方法在中插入K / V对。可以说我使用过method,现在有一个条目,其值为10和17。 如果我在其中插入10,20,由于键10相同而发生冲突,它会简单地用该条目替换之前的条目。 如果钥匙碰撞,则用新的K / V对替换旧的K / V对。 所以我的问题是何时使用Chaining冲突解决技术? 为什么它没有形成键值为10且值为17,20的a? 问题答案: 当您插入线对然后时,
问题内容: 我读过某个地方,HashMap使用链接来解决冲突。但是如果是这样的话。我如何才能访问具有相同键值的所有元素。 例如 : 现在,如果我执行hmap.get(1),它将返回“ 4th Value” 如果确实确实像 关键值1“第四值” —>“第三值” —>“第二值” ---->“第一值” 我如何获得其他值? 仅返回第一个值。 我的第二个问题是 如果执行线性链接。如何删除密钥的任何一个值。假设
问题内容: 想知道有没有比如下计算给定字符串的字符数更简单的方法? 问题答案: 具有完全的Unicode支持(Java 11+)1的最简单的方法来计算字符串中每个字符的出现次数: 1)答案的结尾是具有完整Unicode支持的Java 8版本。 输出量 更新: 对于Java 8+(不支持补充平面中的字符,例如emoji): 更新2: 同样适用于Java 8+。 我误会了,以为它是在Java 9之前才
问题内容: 我正在尝试创建一个HashSet(或任何集合类型- 但我认为HashSet最适合我),无论插入什么,它都将保持顺序。这是我正在从事的联系人管理器项目。我一直在尝试以下示例。 我希望输出将名称按字母顺序排列-至少根据其名字或姓氏。但是,我什至无法辨别用于此排序的HashSet方法。 我的问题是,如何告诉程序如何根据规范对名称进行排序? 问题答案: HashSet不会为条目提供任何有意义的
问题内容: 假设您有一个键类(KeyClass),该键类具有重写的equals,hashCode和clone方法。假设它有2个基本字段,一个String(名称)和一个int(id)。 现在您定义 现在 因此,就HashMap而言,keyOriginal,keyCopy和keyClone是无法区分的。 现在,如果您使用keyOriginal将条目放入HashMap,则可以使用keyCopy或keyC
问题内容: 我为程序使用了HashMap,它运行良好,但是我不理解HashMap的这些初始化之间的区别。 假设我正在实现一个HashMap,以字符作为键,并以整数作为值。这些有什么区别? 问题答案: 任何涉及或不涉及类型实参的内容(尖括号<和>及其之间的部分)都是原始类型,不应使用。原始类型不是通用类型,可以让您做不安全的事情。 “正确”的方法是 第一种使用接口Map作为参考类型。它通常比较惯用,
问题内容: 输出为: 这种“获取”方法的行为如何?由于m1和M2都具有相同的值,并且我没有重写hashcode(),因此将调用对象类的equals()方法吗? 这样对吗 ? 没有哈希码方法,因此JVM无法查看对象m1和m2是否包含不同的值 没有覆盖equals的方法,因此调用了Object类的equals(),并且由于两个对象都不相同,因此上面的代码可以很好地工作,而无需m2替换m1的值。 问题答
问题内容: HashMap之类的Bundle Vs与java.util集合之间有什么区别? 问题答案: 我可以很容易地看到一个区别,即Bundle允许您将int,boolean等放入其中,而HashMap似乎要求您将它们转换为对象。 一个更重要的区别是,对于捆绑包,其包含的每个对象都是可包裹的。这允许捆绑包用作服务参数,并附加到意图/传递到活动中。
问题内容: 我需要从java HashMap获取一个集合,而映射中的更改不会在以后的集合中反映出来。我想使用Collection.toArray()来实现这一点,但是它不起作用。结果产生的Object []也正在发生变化(javadocs说返回的数组将是“安全的”,因为此集合不维护对其的引用)。任何简单的方法来实现这一目标? 问题答案: 仅凭一个API调用就不可能做到这一点,您需要利用深度克隆。对
问题内容: 我知道String类的hashCode()方法 不能 保证为不同的String-s生成唯一的哈希码。我看到了很多将String键放入HashMap-s的用法(使用默认的String hashCode()方法)。如果地图使用真正不同的String键替换了先前放置在地图上的HashMap条目,那么很多这种用法可能会导致重大的应用程序问题。 在String.hashCode()对于不同的St
问题内容: 我有两个String 。 现在,我想将其保存在一个外部文件中以供以后使用,而无需再次对其进行初始化… 那么,如何保存以便以后再次使用? 问题答案: 实现,因此您可以使用常规序列化将哈希映射写入文件 这是Java的链接-序列化示例
问题内容: 描述 一个Java程序,用于读取文本文件并按字母顺序打印每个唯一单词以及单词在文本中出现的次数。 程序应声明一个类型变量来存储单词和相应的出现频率。不过,哪种具体类型?还是? 输入应转换为小写。 单词不包含以下任何字符: 输出示例 备注| 我知道,我已经在Perl中看到了用两行代码完成的优雅解决方案。但是,我想在Java中看到它。 编辑:哦,是的,显示使用这些结构之一的实现(在Java
问题内容: 何时使用哈希图或树图? 我知道可以在需要对元素进行排序时使用TreeMap对其进行迭代。只是吗?当我只想查阅地图或某些最佳特定用途时,没有优化? 问题答案: 哈希表(通常)执行搜索操作(查找),其复杂度限制为,平均情况复杂度为;但是,二进制搜索树(BST)执行搜索操作(查找),其复杂度限制为,平均情况复杂度为。(您自己)应该了解每个(每个)数据结构的实现,以了解其优缺点,操作时间复杂度
问题内容: 我经常需要获取对象列表,然后根据对象中包含的值将它们分组为Map。例如。列出用户和国家(地区)分组。 我的代码通常如下所示: 但是,我不禁会认为这很尴尬,某些专家有更好的方法。到目前为止,我能看到的最接近的是Google Collections的MultiMap。 有没有标准的方法? 谢谢! 问题答案: 在Java 8中,您可以使用。 或者,请使用流API的是从去到直接: 在Java