问题内容: 我们如何确定用于集合的方法的最佳实现(假设equals方法已被正确覆盖)? 问题答案: 最好的实现?这是一个难题,因为它取决于使用模式。 在几乎所有情况下,Josh Bloch的 有效Java项目8(第二版)中都提出了合理的良好实现。最好的办法是在那里查找,因为作者在那里解释了为什么这种方法很好。 简短版 1. 创建一个并分配一个非零值。 对于在方法中测试的每个字段 f,通过以下equ
问题内容: 我想在hashmap上添加重复的元素 所以: 我该怎么做? 问题答案: 使用ie将字符串映射到整数列表。 因此,在这种情况下,将映射到[1,3,3]的列表。 显然,您必须编写自己的put方法,在其中将int添加到列表中。例:
问题内容: Java开发受到压力的一个模因总是使用ArrayList而不是Vector。不推荐使用vector。可能是正确的,但是Vector和Hashtable具有同步的优点。 我正在使用面向大量并发的应用程序,使用像Vector一样同步的对象是否有益?看来他们有自己的位置? 问题答案: Vector和Hashtable的问题在于它们仅在本地同步。它们不会在并发应用程序中中断(就像在损坏的数据中
问题内容: 你更喜欢哪个?为什么? 它们都可以用来完成相似的任务,但是我很好奇,看看人们在实际应用中使用了什么,以及这样做的理由。 问题答案: Bloom过滤器和Cuckoo过滤器在类似的情况下使用,但是通常有很多差异,这些差异通常会确定哪个是更好的选择。 布隆过滤器在数据库引擎内部使用,尤其是Apache Cassandra。正如其他张贴者所说,其原因是为了减少慢速设置操作的成本。基本上,任何高
问题内容: 我需要将所有键和值从一个HashMap复制到另一个B,但不必替换现有的键和值。 最好的方法是什么? 我当时在考虑迭代keySet和checkig是否存在,我会 问题答案: 看来您愿意创建一个临时目录,所以我会这样做: 这是您要添加到地图的地图。 感谢Louis Wasserman,这是一个利用Java 8中新方法的版本:
问题内容: 我正在尝试使用HashSet来存储我创建的类的对象,但是显然相同的对象似乎具有两个不同的哈希,这就是为什么contains方法没有意识到该对象已经在HashSet中的原因。这导致我的程序用尽了堆内存。 我认为我没有做错任何事情,但是无论如何我都希望有第二意见。我已经做过类似的操作,但一切正常,这使它特别烦人。我将不胜感激。 这是我的代码 这是Move类: 这是我得到的输出 问题答案:
问题内容: Eclipse 3.5具有一个非常好的功能,可以生成Java hashCode()函数。例如,它将生成(略微缩短:) (如果类中具有更多属性,则为每个其他属性重复此操作。对于ints,可以省略.hashCode()。) 这似乎很好,但是对于首选的31。它可能取自JavaString的hashCode实现,出于性能原因而使用该特性,在引入硬件乘法器之后就已经不复存在了。在这里,对于i和j
问题内容: 我使用布尔数组作为HashMap的键。但是问题是,尽管元素相同,但当将另一个数组作为键传递时,HashMap无法获取键。(因为它们是不同的对象)。 如何使其与数组作为键一起使用?这是代码: 这两个数组和都包含相同的元素,但是HashMap不会为返回任何内容。 我该如何运作? 问题答案: 您无法以这种方式这样做。都和将有不同的值,因为该方法是从继承,它使用参考来计算哈希码(默认实现)。因
问题内容: 我需要创建电话簿之类的东西。它包含名称和号码。现在,当我键入字母时,应该返回匹配列表。对于下面给出的示例,当我键入H时,应返回包含Harmer,Harris,Hawken,Hosler的列表。当输入Ha时,仅返回Harmer,Harris,Hawken的列表。 知道如何实现吗?提前致谢。 问题答案: 是的,为此,HashMap不是正确的数据结构。正如博佐所说,特里(Trie)是正确的选
问题内容: 我想限制a的最大大小,以对正在实现的各种哈希算法进行度量。我在的一个重载构造函数中查看了loadfactor 。 我尝试在构造函数中将loadFactor设置为0.0f(这意味着我不希望HashMap的大小从EVER增大),但将此无效: 还有另一种方法来限制它的大小,使其永远不会增长吗? 问题答案: 有时越简单越好。
问题内容: 说我有自己的课程 它具有一些属性和方法。它不实现等于,不实现hashCode。 一旦我们调用equals和hashCode,默认的实现是什么?从对象类?那是什么 默认值等于如何工作?默认的hashCode将如何工作,返回什么?==只会检查它们是否引用同一个对象,因此很容易,但是equals()和hashCode()方法呢? 问题答案: 是的,默认实现是Object的实现(通常来说;如果
问题内容: 我试图建立一个HashMap,它将具有整数作为键和对象作为值。 我的语法是: 但是,返回的错误是-令牌“ int”的语法错误,此令牌后应包含尺寸-我不明白为什么应该添加尺寸(即:将int制成数组),因为我只需要存储一个数字作为关键。 我能做什么? 提前致谢!:) 问题答案: 您不能使用基元,因为HashMap在内部将对象用作键。因此,您只能使用从Object继承的对象(即任何对象)。
问题内容: 看到以下内容时,我正在浏览Java的HashMap源代码 我的问题是为什么这个要求首先存在?我还看到,允许使用自定义功能创建HashMap的构造函数将其转换为2的幂: 为什么容量总是必须是2的幂? 另外,执行自动重新哈希处理后,究竟会发生什么?哈希函数也改变了吗? 问题答案: 映射必须计算出将哪个内部表索引用于任何给定键,并将任何值(可能为负)映射到range中的值。when 是2的幂
问题内容: 我有一个具有各种键和值的,如何获得一个值? 我在地图中有一个名为的键,它应该包含一个字符串,如何在不迭代地图的情况下获取它呢? 到目前为止,我有.. 我期望看到一个,例如“ ABC”或“ DEF”,因为这是我最初在此处输入的内容,但是如果我这样做,则会得到类似 抱歉,您可能会猜到我对地图不太熟悉;) 问题答案: 只是使用? 这是有关地图的教程,您可能会发现它很有用:http : //j
问题内容: 我正在研究Java 的实现,只停留在一点。 该函数如何计算? 谢谢 问题答案: 它不是在计算 哈希 ,而是在计算 存储桶 。 表达确实逐位上使用,这是像一个位掩码,以便仅返回的低位比特,从而使得对于一个超高速变体。