我们如何确定hashCode()
用于集合的方法的最佳实现(假设equals方法已被正确覆盖)?
最好的实现?这是一个难题,因为它取决于使用模式。
在几乎所有情况下,Josh Bloch的 有效Java项目8(第二版)中都提出了合理的良好实现。最好的办法是在那里查找,因为作者在那里解释了为什么这种方法很好。
简短版
1. 创建一个int result
并分配一个非零值。
对于在方法中测试的每个字段 f,通过以下equals()方式计算哈希码c:
如果字段f为boolean:计算(f ? 0 : 1)
;
byte
,char,short或int:计算(int)f
;long
:计算(int)(f ^ (f >>> 32))
;float
:计算Float.floatToIntBits(f)
;double
:计算Double.doubleToLongBits(f)
和处理返回值,就像每个长值一样;c
与result
:result = 37 * result + c
result
问题内容: 我有一套清单: 我要s1∩s2∩s3 … 我可以编写一个函数来执行一系列成对的操作,等等。 有没有推荐,更好或内置的方法? 问题答案: 从python版本2.6开始,您可以对使用多个参数,例如 如果这些集合在列表中,则表示为: 这里是列表扩展 请注意,是 不是 一个静态的方法,但这种使用功能符号应用第一套交叉口列表的其余部分。因此,如果参数列表为空,则将失败。
问题内容: 我想过滤java.util.Collection基于谓词的。 问题答案: Java 8(2014)在一行代码中使用流和lambda解决了此问题: 这是一个教程。 使用修改收集到位。(注意:在这种情况下,谓词将删除满足该谓词的对象): 允许过滤集合而无需编写循环或内部类: 你能想象一些更具可读性的东西吗?
问题内容: 是否可以集成Python和JavaScript?例如,假设您希望能够在JavaScript中定义类并从Python使用它们(反之亦然)。如果是这样,最好的方法是什么?我不仅对这是否可行而且对是否 有人在“严肃的”项目或产品中做到了 感兴趣。 我想举个例子,可以使用Jython和Rhino,但我很好奇是否有人真正做到了这一点,以及是否有针对其他平台的解决方案(尤其是CPython)。 问
问题内容: 集成erlang和python的最佳方法是什么? 我们需要在erlang中调用python函数,并在python中调用erlang函数。目前,我们正在尝试将SOAP用作这两种语言之间的中间层,但是我们有很多“不兼容”的麻烦。您能否建议执行集成的最佳方法? 问题答案: 如erlport所述,您可以在Erlang端使用Erlang端口协议和term_to_binary / binary_t
我们使用ArrayList、hashmap等集合&更多。 另外有时候我们也需要检查列表是否为空,所以我们通常会通过以下几种方式进行检查 哪种情况是最好的,或者考虑到程序执行的性能,我们需要将这些情况进行一些组合吗?
问题内容: 我在想是否存在一种更好/更巧妙的方法来否定Java。实际上,我正在执行以下操作: 但是我认为应该存在一种“美丽”的语法。 有谁知道它是否存在以及其语法如何? 编辑: 美丽,我可能会这样说: 问题答案: 不,没有更好的办法。你的是规范的。